使用新认证的用户将禁用Facebook应用程序的权限请求


Facebook App permission requests get disable by the user using the new authentication

我使用以下代码进行应用程序身份验证:

    //Obtain the access_token with publish_stream permission 
if(empty($_REQUEST["code"])){ 
    $dialog_url= "http://www.facebook.com/dialog/oauth?"
    . "client_id=" .  $app_id 
    . "&redirect_uri=" . urlencode($post_login_url)
    .  "&scope=publish_stream,user_birthday";
    echo("<script>top.location.href='" . $dialog_url 
    . "'</script>");
}
else {
        $code = $_REQUEST["code"];
    $token_url="https://graph.facebook.com/oauth/access_token?"
    . "client_id=" . $app_id
    . "&client_secret=" . $app_secret
    . "&code=" . $code
    . "&redirect_uri=" . urlencode($post_login_url);
    $response = file_get_contents($token_url);
    $params = null;
    parse_str($response, $params);
    $access_token = $params['access_token'];
}

在新的facebook认证中,用户可以选择其中一个权限请求,并在点击"登录"按钮后取消它。例如,用户可以禁用对publish_stream或user_birthday访问的请求,但仍然可以登录我的应用程序。我发现Zynga和许多其他公司仍在使用老的认证请求,如下所示:

https://i.stack.imgur.com/ESigT.png(我在网上找到的一些图片)

但由于某些原因,在过去的2周我的请求权限对话框被更改为新的:http://i52.tinypic.com/qstm6g.png(一些我在网上找到的图片)

如何切换回原来的权限对话框?这只是一个单一的对话框,而不是2-3个对话框,直到用户登录到我的应用程序。

  1. 我不确定新的应用程序是否可以切换回来,即使你可以…不推荐,因为所有的应用很快就会迁移到新的版本。
  2. 即使是Zynga应用,用户也可以从他/她的应用隐私设置中撤销这些权限
  3. 需要处理权限被撤销的情况。这在这篇博文中有解释。