我使用以下代码进行应用程序身份验证:
//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个对话框,直到用户登录到我的应用程序。
- 我不确定新的应用程序是否可以切换回来,即使你可以…不推荐,因为所有的应用很快就会迁移到新的版本。
- 即使是Zynga应用,用户也可以从他/她的应用隐私设置中撤销这些权限
- 需要处理权限被撤销的情况。这在这篇博文中有解释。