Facebook SDK:有时电子邮件字段返回null(设置了“email”权限)

时间:2012-04-14 15:11:50

标签: facebook

我有一个用PHP编写的Facebook应用程序。询问用户的“电子邮件”权限。我注意到我获得了 90%的用户电子邮件地址,但没有获得一些。

我知道电子邮件权限允许Facebook App获取用户个人资料中所述的主要电子邮件地址,但为什么SDK有时会返回null

2 个答案:

答案 0 :(得分:5)

“email”是一种扩展权限,用户在申请时不需要提供。如果您需要用户在继续使用应用程序之前授予“电子邮件”权限,则需要在允许用户在身份验证后继续其工作流程之前检查该权限是否存在。

您需要使用的图表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);     
        }       
    });
}

答案 1 :(得分:0)

我不认为电子邮件是扩展权限集的一部分。我在授权对话框中询问了电子邮件权限,它没有出现在身份验证对话框中。

相关问题