【问题标题】:Integrating Facebook users with our app using laravel 5.2 socialite使用 laravel 5.2 socialite 将 Facebook 用户与我们的应用程序集成
【发布时间】:2016-10-26 14:06:51
【问题描述】:

其实我是按照http://blog.damirmiladinov.com/laravel/laravel-5.2-socialite-facebook-login.html#.V2yhIbjJvIU的指示来的

我卡住的步骤是

向迁移添加以下字段:

Schema::table('social_accounts', function (Blueprint $table) {
    $table->integer('user_id');
    $table->string('provider_user_id');
    $table->string('provider');
    $table->timestamps();
});

运行迁移

php 工匠迁移:刷新

运行此命令时出错:

[照亮\数据库\查询异常]

SQLSTATE[42S01]:基表或视图已存在:1050 表 '社会的 _acco unts' 已经存在 (SQL: create table social_accounts (id int un signe d not null auto_increment 主键, created_attimestamp null, u pdate d_attimestamp null) 默认 字符集 utf8 collat​​e utf8_unicode_ci)

[PDO异常]

SQLSTATE[42S01]:基表或视图已存在:1050 表 '社会的 _accounts' 已经存在

以下是我点击 fblogin 后在 localhost 上的错误。

Connection.php 第 713 行中的 QueryException:SQLSTATE[42S22]:列不存在 发现:1054 'where 子句'中的未知列'provider'(SQL:select * 来自social_accounts 其中provider = facebook 和 provider_user_id = 1130902766955428 限制 1)

我的迁移文件:

  <?php

  use Illuminate\Database\Schema\Blueprint;
  use Illuminate\Database\Migrations\Migration;

  class CreateSocialAccountsTable extends Migration
 {
/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::create('social_accounts', function (Blueprint $table) {
        $table->increments('id');
        $table->timestamps();
    }); 

    Schema::table('social_accounts', function (Blueprint $table) {
    $table->integer('user_id');
    $table->string('provider_user_id');
    $table->string('provider');
    $table->timestamps();
});


}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    Schema::drop('social_accounts');
}
 }

我的控制器文件:

 <?php

   namespace App\Http\Controllers;

   use Illuminate\Http\Request;

   use App\Http\Requests;

   use App\Http\Controllers\Controller;

    use App\SocialAccountService;

    use Socialite;

   class SocialAuthController extends Controller
  {
  public function redirect()
 {
    return Socialite::driver('facebook')->redirect();   
}   

public function callback(SocialAccountService $service)
{


  $user = $service->createOrGetUser(Socialite::driver('facebook')->user());

    auth()->login($user);

    return redirect()->to('/home');
             }
        }

我的应用文件夹中的文件:

SocialAccount.php

       <?php

        namespace App;

        use Illuminate\Database\Eloquent\Model;

        class SocialAccount extends Model
         {
     protected $fillable = ['user_id', 'provider_user_id', 'provider'];

      public function user()
   {
    return $this->belongsTo(User::class);
    }
     }

SocialAccountservice.php

           <?php

             namespace App;

              use Laravel\Socialite\Contracts\User as ProviderUser;

              class SocialAccountService
             {
          public function createOrGetUser(ProviderUser $providerUser)
             {
           $account = SocialAccount::whereProvider('facebook')
        ->whereProviderUserId($providerUser->getId())
        ->first();

    if ($account) {
        return $account->user();
    } else {

        $account = new SocialAccount([
            'provider_user_id' => $providerUser->getId(),
            'provider' => 'facebook'
        ]);

        $user = User::whereEmail($providerUser->getEmail())->first();

        if (!$user) {

            $user = User::create([
                'email' => $providerUser->getEmail(),
                'name' => $providerUser->getName(),
            ]);
        }

        $account->user()->associate($user);
        $account->save();

        return $user;

    }

}
    }

【问题讨论】:

    标签: php mysql facebook laravel migration


    【解决方案1】:

    数据库中已经有一个名为“social_accounts”的表。首先删除该表,然后尝试运行迁移。

    【讨论】:

    • 抱歉,它不起作用。显示相同的错误。
    【解决方案2】:

    [已解决]

    第 1 步:从 config/app.php 中删除社交名流引用

    第 2 步:运行作曲家更新

    第 3 步:然后运行 ​​composer dump-autoload

    第4步:然后将社交名流引用添加到config/app.php

    步骤 5:最后,运行 composer dump-autoload

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-13
      相关资源
      最近更新 更多