我有一个用 PHP 编写的 Facebook 应用程序。询问用户的“电子邮件”权限。我注意到我获得了90%的用户电子邮件地址,但不是一些。
我知道电子邮件权限允许 Facebook App 获取用户个人资料中所述的主要电子邮件地址,但为什么 SDK 有时会返回null
?
我有一个用 PHP 编写的 Facebook 应用程序。询问用户的“电子邮件”权限。我注意到我获得了90%的用户电子邮件地址,但不是一些。
我知道电子邮件权限允许 Facebook App 获取用户个人资料中所述的主要电子邮件地址,但为什么 SDK 有时会返回null
?
“电子邮件”是用户在允许应用程序时无需提供的扩展权限。如果您需要您的用户在继续使用您的应用程序之前授予“电子邮件”权限,您需要在允许用户在身份验证后继续其工作流程之前检查该权限是否存在。
您需要使用的图形 API 端点是"/me/permissions"
这是我用来做到这一点的一种方法:
permissions
是一个字符串数组,表示请求的权限。
hasPermissions(["email"], function(hasPerms){
alert(hasPerms);
});
function hasPermissions(permissions, callback){
console.log("perms requested");
console.log(permissions);
FB.api("/me/permissions", function(response){
var hasPerms = true;
console.log("perms obtaind");
console.log(response);
for(var i in permissions){
console.log([permissions[i]] + " - " + response["data"][0][permissions[i]])
hasPerms = hasPerms && response["data"][0][permissions[i]] == 1;
}
if(typeof callback == "function"){
callback(hasPerms);
}
});
}
我不认为电子邮件是扩展权限集的一部分。我在授权对话框中询问了电子邮件权限,它没有出现在身份验证对话框中。