2016-05-30 29 views
0

我正在使用社交名登录/注册Facebook到我的应用程序。当我倾倒我的$ facebookUser可变我看到这个JSON:为什么我无法使用laravel存储oauth登录名的facebook id和头像路径?

$ facebookuser:

enter image description here

但是,当我尝试存储的ID和头像,它不保存它,我可以不会显示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 

    ]); 
} 

回答

1

使用Laravel社会名流提供的方法来访问用户的详细信息,而不是直接访问属性,这里是所有内置提供可用的方法列表:

$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 

    ]); 
} 

不要忘记User模型$fillable财产陈述上述这些列:

/** 
* 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; 
+0

这仍然不是存储annything在数据库中,altough名称和电子邮件存储,我现在可以登录该帐户。但仍然没有存储id和头像 –

+0

确保通过在'User'模型的'$ fillable'属性中添加以上所有列可以进行批量赋值 – Rifki

+0

请参阅编辑答案 – Rifki

相关问题