0

Socialite を使用して、Facebook でアプリケーションにログイン/登録しています。$facebookUser 変数をダンプすると、次の json が表示されます。

$facebookuser:

ここに画像の説明を入力

しかし、 id と avatar を保存しようとすると、保存されず、Facebook のユーザー プロフィール写真を表示できません。ユーザーを保存するためにlaravelを使用しています。

AuthController.php :

public function handleProviderCallback()
{
    try {
        $user = Socialite::driver('facebook')->user();
    } catch (Exception $e) {
        return redirect('auth/facebook');
    }

    $authUser = $this->findOrCreateUser($user);

    Auth::login($authUser, true);

    return redirect()->route('home')->with('successfullFacebookLogin', Auth::user()->name);
}

private function findOrCreateUser($facebookUser)
{
    // When I dd($facebookuser) it gives json stated above
    $authUser = User::where('facebook_id', $facebookUser->id)->first();

    if ($authUser){
        return $authUser;
    }

    return User::create([
        'name' => $facebookUser->name,
        'email' => $facebookUser->email,
        'facebook_id' => $facebookUser->user['id'],
        'avatar' => $facebookUser->avatar,
        'facebookAccount' => 1

    ]);
 }
4

1 に答える 1

1

プロパティに直接アクセスするのではなく、Laravel Socialite が提供するメソッドを使用して、ユーザーの詳細にアクセスします。すべての組み込みプロバイダーで使用可能なメソッドのリストを次に示します。

$user->getId();
$user->getNickname();
$user->getName();
$user->getEmail();
$user->getAvatar();

したがって、コードは次のようになります。

private function findOrCreateUser($facebookUser)
{
    // When I dd($facebookuser) it gives json stated above
    $authUser = User::where('facebook_id', $facebookUser->id)->first();

    if ($authUser){
        return $authUser;
    }

    return User::create([
        'name' => $facebookUser->getName(),
        'email' => $facebookUser->getEmail(),
        'facebook_id' => $facebookUser->getId(),
        'avatar' => $facebookUser->getAvatar(),
        'facebookAccount' => 1

    ]);
 }

上記の列をモデル$fillableのプロパティに記載することを忘れないでください。User

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
    'name', 'email', 'password', 'facebook_id', 'avatar', 'facebookAccount'
];

それ以外の場合は、属性を手動で入力します:

$user = new User;
$user->name = $facebookUser->getName();
$user->email = $facebookUser-> getEmail();
$user->facebook_id = $facebookUser->getId();
$user->facebookAccount = 1;
$user->save();

return $user;
于 2016-05-30T15:41:34.590 に答える