【问题标题】:Laravel Socialite error: "An active access token must be used to query information about the current user."Laravel Socialite 错误:“必须使用活动访问令牌来查询有关当前用户的信息。”
【发布时间】:2017-04-23 19:39:49
【问题描述】:

我正在使用Socialite 通过 Facebook 对我的用户进行身份验证。但是,我无法让它工作。我按照this 教程进行操作,但出现以下错误:

我到处寻找并尝试了任何方法,但我无法让它工作。这是我的代码:

在services.php中:

'facebook' => [
    'client_id' => '[My App ID]',
    'client_secret' => '[My App Secret]',
    'redirect' => 'http://localhost:8000/auth/facebook/callback/',
],

我的路线:

Route::group(['middleware' => ['web', 'requestlog']], function () {   
    Route::get('auth/facebook', 'Auth\AuthController@redirectToProvider');
    Route::get('auth/facebook/callback/', 'Auth\AuthController@handleProviderCallback');
});

然后在我的 AuthController 中:

use Laravel\Socialite\Facades\Socialite;

public function redirectToProvider()
{
    return Socialite::driver('facebook')->redirect();
}

public function handleProviderCallback()
{
    try {

        $providerUser = Socialite::driver('facebook')->user();
        dd('yay it worked!');

      } catch (RequestException $e) {

      dd($e->getResponse()->json());

    }
}

然后我在FB里有这些设置:

出了什么问题?据我所知,我遵循了所有必要的步骤。我不明白这里有什么问题。我希望我提供了所有必要的信息!

编辑

显示错误的页面上的 URL 如下所示: http://localhost:8000/auth/facebook/callback?code=AQBtnKEqZgImLqN7f3hETe9GptgzFH71sXrV5qmv8Rpo6Oj5-4rl8mBjFPbfkBtiV8w9atV7X4OrWfHyalJkXU-k6lkEv1bly6v5Qxm2es-_RRp8gfoSWOZwjqE34Rvq6__L3aEOERPEa9LSBk_rKVP_cYGZoQeAydRLQUZVGdr_p1SuE1hRZIvZTAZ-zorkPoyyCDNZtDEVFHGRJt_c3kTf_AKE97FVemrXrUDzxaX-rvovKtfGF3u4CvAIt5pe4g7zD30jAWF78ZgjjPpr21MdaGwP5V0tc8g84oz0dR5Nbit7sKeUE-XblWFrQCIKfqs-OJ6rcuzw7iPTx6xrQ9Ev&state=4f924a9974207482c6fce24c1d74705c6688adc0#_=_

我还尝试了隐身模式,删除了 cookie 等等。结果一样...

【问题讨论】:

  • 可能是token过期了,再申请token试试看是否有效。
  • @BartBergmans 你的意思是应用秘籍刷新吗?如果这不是您的意思,那么我该如何重新请求您正在谈论的那个令牌?我对此很陌生,希望您能提供帮助!顺便说一句,如果有帮助,我已经尝试过隐身。
  • 这个$providerUser = Socialite::driver('facebook')->user();会返回什么?
  • @Markinson $providerUser 返回null?
  • @KelvinKyaw 在Socialite::driver('facebook')->user() 处抛出异常,所以甚至根本没有设置$providerUser

标签: php facebook laravel laravel-5.2 facebook-php-sdk


【解决方案1】:

我不想弄乱访问令牌或其他 API,因为我认为这不能解决我的问题。但是现在(在我不知道多久之后......)我让它工作了!对于谁也有这个问题;我做了以下步骤,但不幸的是:

  1. 我从 composer.json 中删除了社交名流并进行了更新。
  2. 我重新安装了社交名流。我在 composer.json 中添加了以下行:"laravel/socialite": "2.*"
  3. 然后,当我运行 sn-p 时,出现以下错误:ErrorException in FacebookProvider.php line 89:Undefined index: first_name
  4. 之后我替换了FacebookProvider.phpwith this file from github中的代码。

不要忘记每次都执行随机的composer dump-autoload,因为有时随机似乎也有帮助。

现在不管什么原因它终于可以工作了!

编辑

我还注意到composer update 做得很好。如果这不起作用,请将社交名流更新到最新版本。这最终解决了我最近遇到的另一个问题。

【讨论】:

  • 非常感谢,它救了我的命 :)
  • @MahaDev 很高兴它做到了! :-)
【解决方案2】:

运行composer update 然后composer dump-autoload 为我解决了这个问题。

我注意到 Laravel Socialite 已更新,所以@Markinson 是对的

【讨论】:

  • 对我来说确实一样,laravel/socialite (v2.0.20 => v2.0.21):
【解决方案3】:

对我来说,它适用于 composer require laravel/socialite:2.0.21 ... 从 2.0.20 升级

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    相关资源
    最近更新 更多