Facebook SDK 无效范围错误

Facebook SDK Invalid Scopes error

我正在尝试获取用户的生日,但是一旦我添加 user_birthday 权限,我就会收到错误 Invalid Scopes: user_birthday. This message is only shown to developers...

我以为它首先被弃用了,但一无所获,3.0 的文档也有 user_birthday 权限。 (HERE)

$fb = new Facebook\Facebook([
    'app_id' => 'XXXXXXXXXXXXXXX',
    'app_secret' => 'XXXXXXXXXXXXXXXXXXXXXXXXX',
    'default_graph_version' => 'v3.0',
]);

$helper = $fb->getRedirectLoginHelper();

$permissions = ['email', 'user_birthday'];
$loginUrl = $helper->getLoginUrl('https://mywebsite.com/callback', $permissions);

$loginUrlFinal = 'https://www.facebook.com/dialog/oauth?client_id=XXXXXXXXXXXXXXX&redirect_uri='.$loginUrl.'&state='.urlencode($fb_params);

在出现有关无效范围的错误后,我被重定向到我的回调文件并出现 "Bad request" 错误。

if (! isset($accessToken)) {
    if ($helper->getError()) {
        header('HTTP/1.0 401 Unauthorized');
        echo "Error: " . $helper->getError() . "\n";
        echo "Error Code: " . $helper->getErrorCode() . "\n";
        echo "Error Reason: " . $helper->getErrorReason() . "\n";
        echo "Error Description: " . $helper->getErrorDescription() . "\n";
    } else {
        header('HTTP/1.0 400 Bad Request');
        echo 'Bad request';
    }
    exit;
}

编辑: 我添加的几乎所有权限都会发生这种情况,到目前为止唯一有效的只是 email.

向 OpenGraph 发送 ?fields=email,user_birthday returns 没有生日的请求,但 ID、姓名、电子邮件都正常。我想发生这种情况是因为我没有批准 user_birthday 权限,但是如果由于 Invalid Scopes?

而无法打开权限屏幕,我该怎么办呢?

经过长时间的研究,我发现这是因为我的应用程序 "Live"。看起来只有当前处于开发模式的应用程序才有权限工作。

希望对大家有所帮助。