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

Laravel 5.1 - Socialite - Fetching User

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

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

它完美地工作并且 returns 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


编辑:

.. 和 link 包括 ?code=9943290...

看来您可能忘记了 return。

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