HybridAuth Facebook无效范围:数组请检查小写字母或分隔符

问题描述

Facebook几天前开始返回此错误

“无效范围:数组(请检查小写字母或分隔符)”

我有一段时间没有更改登录功能或Facebook应用程序设置了。知道这个范围有什么问题或发生了什么变化吗?

$config = [
        'callback' => HttpClient\Util::getcurrenturl(),'providers' => [
            PROVIDER => [
                "enabled" => true,"keys"    => [
                "id" => "nnnnnnnnnnnnnnn","secret" => "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ],"scope"   => ['public_profile','email']
            ],],];

facebook错误页面的uri为:

https://www.facebook.com/dialog/oauth?response_type=code&client_id=nnnnnnnnnnnnnnn&redirect_uri=https%3A%2F%2Fxxxxxxxxx.com%2Ffacebook-login.PHP&scope[0]=public_profile&scope[1]=email&state=HA-nnnnxnnnnxnnnnxnnnnxnnnnxnnnnxnnnx

您可以在这里尝试我的Facebook登录名: https://trailsnh.com/dashboard.php

解决方法

我知道您说过您通过将其更改为逗号分隔的字符串来修复它,这很棒。有关此文档,请参见Facebook Developer site。在那里,他们说:

范围。用逗号或空格分隔的权限列表,以向使用您的应用的用户请求。

我个人将其更改为空格,因为这就是defined in the OAuth specification

scope参数的值表示为以空格分隔的区分大小写的字符串的列表。

如果它在Facebook上再次发生变化,我希望它仍然符合规范。因此,如果您将其更改为任何内容,我认为这是更安全的选择。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...