简体   繁体   中英

Laravel Socialite error: “An active access token must be used to query information about the current user.”

I'm using Socialite to authenticate my users via Facebook. However, I can't get it to work. I followed this tutorial, but I get the following error:

在此输入图像描述

I looked everywhere and tried whatever, but I can't get it to work. Here's my code:

In services.php:

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

My routes:

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

Then in my 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());

    }
}

Then I have these settings in FB:

在此输入图像描述

在此输入图像描述

What is going wrong? I followed all the necessary steps as far as I know. I don't get what's wrong here. I hope I provided all the necessary information!

Edit

Here's what the url looks like on the page where the error displays: http://localhost:8000/auth/facebook/callback?code=AQBtnKEqZgImLqN7f3hETe9GptgzFH71sXrV5qmv8Rpo6Oj5-4rl8mBjFPbfkBtiV8w9atV7X4OrWfHyalJkXU-k6lkEv1bly6v5Qxm2es-_RRp8gfoSWOZwjqE34Rvq6__L3aEOERPEa9LSBk_rKVP_cYGZoQeAydRLQUZVGdr_p1SuE1hRZIvZTAZ-zorkPoyyCDNZtDEVFHGRJt_c3kTf_AKE97FVemrXrUDzxaX-rvovKtfGF3u4CvAIt5pe4g7zD30jAWF78ZgjjPpr21MdaGwP5V0tc8g84oz0dR5Nbit7sKeUE-XblWFrQCIKfqs-OJ6rcuzw7iPTx6xrQ9Ev&state=4f924a9974207482c6fce24c1d74705c6688adc0#_=_

I also tried in incognito mode, removed cookies and so on. Same result...

I didn't want to mess with access tokens or other API's because I don't think that would be a solution to my problem. But now (after I don't know how long...) I got it to work! For whoever has this problem as well; I did the following steps which out of luck made it work:

  1. I deleted socialite from composer.json and updated it.
  2. I reinstalled socialite. I added the following line in composer.json: "laravel/socialite": "2.*" .
  3. Then when I ran the snippet I got the following error: ErrorException in FacebookProvider.php line 89:Undefined index: first_name .
  4. After that I replaced the code in FacebookProvider.php with this file from github .

Don't forget to execute random composer dump-autoload 's everytime because sometimes that randomly seems to help as well.

Now it finally works for whatever reason!

EDIT

I also noticed that composer update does a good job. Update socialite to the newest version if this doesn't work. This eventually fixed another problem I had recently.

Running composer update and then composer dump-autoload solved the issue for me.

I noticed Laravel Socialite was updated, so @Markinson is right

The error you have mentions is about the access_token which is invalid. You need to generate an permanent access token in order to get this thing work.

This is a link you can follow. ( facebook: permanent Page Access Token? ) and I think you should use direct Http graph api calls to make this things work.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM