0

使用官方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 身份验证。我在视频中做了所有事情,直到(特别是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) 没有返回任何东西,所以部分没有工作/转换。

4

1 回答 1

1

看来您可能忘记了退货。

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

在此处输入图像描述

于 2015-07-23T01:47:21.233 回答