Laravel socialite 通过 Facebook 登录出现“抱歉,出了些问题”的错误。

5
我可以帮助您翻译以下内容:

我有一个使用 Facebook 登录的 Laravel 项目。但是测试几天后,当我访问路由时,它显示 抱歉,出了些问题。 我没有触碰或修改我的代码,也没有在我的 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');

我的Facebook应用程序OAuth设置 在此输入图像描述

结果是什么样子的

enter image description here

Laravel版本: 6.2

Socialite版本: ^4.4

更新:如果我移除所有的作用域,我可以成功登录并获取凭证和令牌。但是为什么作用域不起作用呢?


1
您的应用程序是哪种模式?是开发版还是正式版?此外,请在Laravel项目的.env文件中将app_debug模式设置为true后再尝试,以获取正确的错误消息。 - Helper
不确定这是否会导致问题,但我在官方权限参考文档中找不到“manage_page”范围。你能再确认一下吗? - Tschitsch
正如上一条评论所建议的那样,该范围被称为“manage_pages”。尝试在末尾添加“s”。 - Johan
@Johan 如果我尝试在pages上添加一个's',它会给我一个错误提示: 无效的范围:pages_manage_posts、pages_read_engagement、manage_pages、publish_to_groups。 - user0918232
在开发环境下,先生,@Helper。 - user0918232
嗨,我认为你需要使用本地的 https URL。 - Kamlesh Paul
5个回答

2

这个错误没有明确说明出了什么问题,所以很难解决,但你可以检查日志获取详细的错误报告,这肯定会有所帮助。日志位于存储目录中。如果你想让 Laravel 显示完整的错误信息而不是神秘的“Whoops”消息,请确保在你的 .env 文件中添加 APP_ENV=local 并且 APP_DEBUG=true,或者你可以在 config/app.php 文件中进行调整。

'env' => env('APP_ENV', 'local'),
'debug' => env('APP_DEBUG', true),

已经设置为true了。看起来问题在Socialite上。 - user0918232

1

'debug' => env('APP_DEBUG', true),

并运行 php artisan config:cache 命令。


请在您的答案中添加一些解释,以便其他人可以从中学习。 - Nico Haase
谁已经有了这方面的经验,还需要出去太多吗? - dılo sürücü

0

实际上,您正在生产服务器上,这就是为什么错误没有显示在那里的原因。 尝试更改环境变量APP_DEBUG=true.env文件中,并检查确切的错误。这可能是由于您正在使用的Socialite包引起的。


0
刚刚回答了另一个问题,发现我的问题是因为Facebook应用程序设置中的“电子邮件”使用案例权限未激活。
在这里发布一下,以防能帮到其他人: https://stackoverflow.com/a/76768660/3102301

虽然这个链接可能回答了问题,但最好在这里包含答案的关键部分,并提供链接作为参考。仅有链接的答案如果链接页面发生变化,就可能失效。- 来自审核 - Ram Chander

0
其实只需要在URL中检查请求参数,范围为email%2Cpages_read_engagement%2C等等,就可以解决这个问题。 只需删除email%2C即可奇迹般地发生。 因为我们不是请求电子邮件,而是请求其他可能包含在URL中但不是电子邮件的权限。 谢谢。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接