我使用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中有这些设置:
出了什么问题?据我所知,我遵循了所有必要的步骤。我不明白这里有什么问题。我希望我提供了所有必要的信息!
修改
以下是显示错误的网页上的网址内容:
http://localhost:8000/auth/facebook/callback?code=AQBtnKEqZgImLqN7f3hETe9GptgzFH71sXrV5qmv8Rpo6Oj5-4rl8mBjFPbfkBtiV8w9atV7X4OrWfHyalJkXU-k6lkEv1bly6v5Qxm2es-_RRp8gfoSWOZwjqE34Rvq6__L3aEOERPEa9LSBk_rKVP_cYGZoQeAydRLQUZVGdr_p1SuE1hRZIvZTAZ-zorkPoyyCDNZtDEVFHGRJt_c3kTf_AKE97FVemrXrUDzxaX-rvovKtfGF3u4CvAIt5pe4g7zD30jAWF78ZgjjPpr21MdaGwP5V0tc8g84oz0dR5Nbit7sKeUE-XblWFrQCIKfqs-OJ6rcuzw7iPTx6xrQ9Ev&state=4f924a9974207482c6fce24c1d74705c6688adc0#_=_
我还尝试了隐身模式,删除了Cookie等等。同样的结果......
答案 0 :(得分:10)
我不想弄乱访问令牌或其他API,因为我认为这不会解决我的问题。但是现在(在我不知道多久之后......)我开始工作了!对于有这个问题的人;我做了以下几个步骤,运气不好:
"laravel/socialite": "2.*"
。ErrorException in FacebookProvider.php line 89:Undefined index: first_name
。FacebookProvider.php
with this file from github。不要忘记每次都执行随机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升级