Laravel Socialite错误:"必须使用活动访问令牌来查询有关当前用户的信息。"

时间:2016-12-08 14:14:46

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

我使用Socialite通过Facebook验证我的用户。但是,我无法让它发挥作用。我遵循了this教程,但是我收到以下错误:

enter image description here

我到处寻找并尝试过任何事情,但我无法让它发挥作用。这是我的代码:

在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中有这些设置:

enter image description here

enter image description here

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

修改

以下是显示错误的网页上的网址内容: http://localhost:8000/auth/facebook/callback?code=AQBtnKEqZgImLqN7f3hETe9GptgzFH71sXrV5qmv8Rpo6Oj5-4rl8mBjFPbfkBtiV8w9atV7X4OrWfHyalJkXU-k6lkEv1bly6v5Qxm2es-_RRp8gfoSWOZwjqE34Rvq6__L3aEOERPEa9LSBk_rKVP_cYGZoQeAydRLQUZVGdr_p1SuE1hRZIvZTAZ-zorkPoyyCDNZtDEVFHGRJt_c3kTf_AKE97FVemrXrUDzxaX-rvovKtfGF3u4CvAIt5pe4g7zD30jAWF78ZgjjPpr21MdaGwP5V0tc8g84oz0dR5Nbit7sKeUE-XblWFrQCIKfqs-OJ6rcuzw7iPTx6xrQ9Ev&state=4f924a9974207482c6fce24c1d74705c6688adc0#_=_

我还尝试了隐身模式,删除了Cookie等等。同样的结果......

4 个答案:

答案 0 :(得分:10)

我不想弄乱访问令牌或其他API,因为我认为这不会解决我的问题。但是现在(在我不知道多久之后......)我开始工作了!对于有这个问题的人;我做了以下几个步骤,运气不好:

  1. 我从composer.json删除了socialite并更新了它。
  2. 我重新安装了名媛。我在composer.json中添加了以下行:"laravel/socialite": "2.*"
  3. 然后,当我运行代码段时,我收到以下错误:ErrorException in FacebookProvider.php line 89:Undefined index: first_name
  4. 之后我更换了FacebookProvider.php with this file from github
  5. 中的代码

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

    现在无论出于何种原因它终于有效了!

    修改

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

答案 1 :(得分:4)

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

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

答案 2 :(得分:0)

您提到的错误是关于access_token无效的。您需要生成一个永久访问令牌才能使这件事工作。

这是您可以关注的链接。 (facebook: permanent Page Access Token?) 我认为你应该使用直接的Http图api调用来使这个东西工作。

答案 3 :(得分:0)

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