Laravel 5.1 - 社交名流 - 获取用户

时间:2015-07-23 01:03:35

标签: facebook facebook-graph-api laravel laravel-socialite

使用官方Laravel Docs 5.1 - Socialite,我设置了我的路由并编辑了我的AuthController。

   public function redirectToProvider()
   {  
      return Socialite::driver('facebook')
         ->scopes(['public_profile', 'email'])->redirect();
   }

它运作完美并且返回 http://domain.dev/auth/facebook/callback?code=AQDLFlYr...

然后我使用Laracasts' Socialite - Laravel 5.0,我尝试将我的一个转换为适当的Facebook身份验证。我做了所有事情,直到( min.12.11 ,特别是)在视频中。 (12.11他在15秒内回顾了这些东西)。这就是我想要做的。

现在,当我将AuthController更改为:

  public function redirectToProvider(AuthenticateUser $authenticateUser, Request $request)
  {  
     return $authenticateUser->execute($request->has('code'));

  } 

...让我的AuthenticateUser class像这样:

use Illuminate\Contracts\Auth\Guard;  (PS. I changed Authenticator to Guard)

  class AuthenticateUser {
       private $users;
       private $socialite;
       private $auth;

    public function __construct(UserRepository $users, Socialite $socialite, Guard $auth)
    {

      $this->users = $users;
      $this->socialite = $socialite;
      $this->auth = $auth;
    }

    public function execute($hasCode)
    {   
      // dd($hasCode) *First dd

      if ( ! $hasCode) return $this->getAuthorizationFirst();

      $user = $this->socialite->driver('facebook')->user();

      // dd($hasCode) *Second dd
      // dd($user) *Third dd
    }

    private function getAuthorizationFirst()
    {
      return $this->socialite->driver('facebook')
         ->scopes(['public_profile', 'email'])->redirect();
    } 
  }

*UserRepository is currently empty.

当我使用*First dd时,我会在屏幕上收到False

当我使用*Second dd时,我会收到True

当我使用*Third dd时,我什么也得不到。

在所有这些情况下,现在,我正在接收http://domain.dev/auth/facebook?code=9329409329042

编辑:

  • 我添加了return,现在该链接包含?code=9390249032...,但是当我使用*Third dd - dd($user)时,仍然没有返回任何内容

  • 我设法来到这里:

        public function execute($hasCode)
    {
    
             dd($hasCode); // returns FALSE now     
    if ( ! $hasCode) return $this->getAuthorizationFirst();
    
             dd($hasCode); // returns TRUE now
    
        $user = $this->socialite->driver('facebook')->user();
    
            dd($user);  // BUT STILL RETURNS NOTHING
    
     }
    

..和链接包含?code=9943290...

  • 基本上,$user = $this->socialite->driver('facebook')->user();是不工作/转换的部分,因为dd($ user)没有返回任何内容..

1 个答案:

答案 0 :(得分:1)

看起来你可能已经忘记了回归。

return $authenticateUser->execute($request->has('code'));

enter image description here