我有一个使用 facebook 登录的 laravel 项目。但经过几天的测试,当我去路线时,它说
Sorry, something went wrong.
。我没有触摸或修改我的代码以及我的 Facebook 开发者帐户中的应用程序。有人可以告诉我发生了什么事吗?
这是我的控制器
public function redirectToProvider(){
$facebookScope = [
'pages_manage_posts',
'pages_read_engagement',
'instagram_basic',
'pages_show_list',
'manage_pages',
'publish_to_groups',
'groups_access_member_info',
];
return Socialite::driver('facebook')->scopes($facebookScope)->redirect();
}
public function facebook(){
try {
$user = Socialite::driver('facebook')->stateless()->user();
// dd($user);
// $this->getPages($user);
$this->getGroups($user);
} catch (\Exception $e) {
return response()->json($e);
}
}
路线
Route::get('/fb','FacebookController@redirectToProvider');
Route::get('/facebookAuth','FacebookController@facebook');
结果是什么样的
Laravel 版本:
6.2
社交名流版本:
^4.4
更新:如果我删除所有范围,我可以成功登录并获取凭据和令牌。但为什么示波器不起作用?
此错误没有具体说明出了什么问题,因此很难解决,但您可以检查日志以获取详细的错误报告,它肯定会对您有所帮助。日志位于存储目录中。如果你想让 Laravel 显示完整的错误而不是神秘的“哎呀”消息,请确保你的
.env
APP_ENV=local
在那里并且你的 APP_DEBUG=true
或者你可以在你的 config/app.php
中调整它,比如
'env' => env('APP_ENV', 'local'),
'debug' => env('APP_DEBUG', true),
'debug' => env('APP_DEBUG', true),
并运行
php artisan config:cache
命令
实际上您位于生产服务器上,这就是错误没有显示在那里的原因。 尝试更改
APP_DEBUG=true
文件中的环境变量 .env
并检查确切的错误。这可能是由于您正在使用的 Socialite 软件包所致。
实际上,您只需检查 URL 中的请求参数即可解决此问题,在scope=email%2Cpages_read_engagement%2C ETC 中, 只需删除电子邮件%2C,奇迹就会发生。 因为我们不是请求电子邮件,而是请求其他权限,该权限可能位于 URL 中,但不是电子邮件中。 谢谢
刚刚发布了另一个问题的答案,其中我的问题归结为 Facebook 应用程序设置中的非活动“电子邮件”用例权限。
将其发布在这里,以防它对某人有帮助: https://stackoverflow.com/a/76768660/3102301