Laravel Socialite error: "An active access token must be used to query information about the current user."
Laravel Socialite error: "An active access token must be used to query information about the current user."
我正在使用 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#_=_
我也试过隐身模式,删除cookies等等。同样的结果...
我不想弄乱访问令牌或其他 API,因为我认为这不能解决我的问题。但是现在(我不知道过了多久......)我开始工作了!对于也有此问题的人;我执行了以下步骤,不幸的是它成功了:
- 我从 composer.json 中删除了 socialite 并更新了它。
- 我重新安装了 socialite。我在 composer.json 中添加了以下行:
"laravel/socialite": "2.*"
.
- 然后,当我 运行 代码片段时,出现以下错误:
ErrorException in FacebookProvider.php line 89:Undefined index: first_name
.
- 之后我替换了
FacebookProvider.php
with this file from github中的代码。
不要忘记每次都执行 运行dom composer dump-autoload
因为有时 运行domly 似乎也有帮助。
现在终于可以用了!
编辑
我也注意到 composer update
做得很好。如果这不起作用,请将 socialite 更新到最新版本。这最终解决了我最近遇到的另一个问题。
运行 composer update
然后 composer dump-autoload
为我解决了这个问题。
我注意到 Laravel Socialite 更新了,所以@Markinson 是对的
对我来说它适用于 composer require laravel/socialite:2.0.21
...从 2.0.20 升级
我正在使用 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#_=_
我也试过隐身模式,删除cookies等等。同样的结果...
我不想弄乱访问令牌或其他 API,因为我认为这不能解决我的问题。但是现在(我不知道过了多久......)我开始工作了!对于也有此问题的人;我执行了以下步骤,不幸的是它成功了:
- 我从 composer.json 中删除了 socialite 并更新了它。
- 我重新安装了 socialite。我在 composer.json 中添加了以下行:
"laravel/socialite": "2.*"
. - 然后,当我 运行 代码片段时,出现以下错误:
ErrorException in FacebookProvider.php line 89:Undefined index: first_name
. - 之后我替换了
FacebookProvider.php
with this file from github中的代码。
不要忘记每次都执行 运行dom composer dump-autoload
因为有时 运行domly 似乎也有帮助。
现在终于可以用了!
编辑
我也注意到 composer update
做得很好。如果这不起作用,请将 socialite 更新到最新版本。这最终解决了我最近遇到的另一个问题。
运行 composer update
然后 composer dump-autoload
为我解决了这个问题。
我注意到 Laravel Socialite 更新了,所以@Markinson 是对的
对我来说它适用于 composer require laravel/socialite:2.0.21
...从 2.0.20 升级