Facebook 电子邮件从 phonegap facebookConnect 插件返回为未定义

Posted

技术标签:

【中文标题】Facebook 电子邮件从 phonegap facebookConnect 插件返回为未定义【英文标题】:Facebook email is returned as undefined from phonegap facebookConnect plugin 【发布时间】:2016-12-20 01:46:23 【问题描述】:

我正在使用 phonegap facebook Connect plugin 在我的应用中启用 facebook 登录。 但是,facebook 电子邮件被返回为未定义。

我需要在我的代码中添加一些东西吗? 我在互联网上查找了这个问题,看来我的代码应该可以工作。除电子邮件地址外,其他所有内容都将返回。

如果您能提供帮助,我将不胜感激

这是我的 javascript 代码:

   facebookConnectPlugin.api('/me?fields=id, email, link, name, picture', ["public_profile"],function(data)
        var fb_user_id = data.id;
        var fb_email = data.email;
        var fb_name = data.name;
        var fb_picture_url = data.picture.data.url;
        var fb_user_link = data.link;
        alert("fb_email" + fb_email);
    ); //end api call

编辑:

我使用此代码尝试了一个测试用户帐户,但电子邮件地址 DID 被返回。但是,对于我正在测试的真实帐户,这不起作用。

通过更多测试,我尝试按如下方式添加电子邮件权限,但这不起作用,因为我返回的数据显示为“FACEBOOK_NON_JSON_RESULT”

 facebookConnectPlugin.api('/me?fields=id, email, link, name, picture', ["public_profile", "email"],function(data)
            var fb_user_id = data.id;
            var fb_email = data.email;
            var fb_name = data.name;
            var fb_picture_url = data.picture.data.url;
            var fb_user_link = data.link;
            alert("fb_email" + fb_email);
        ); //end api call

【问题讨论】:

您可能需要将email 添加到范围权限?并非所有字段都可用。 @Searching 谢谢。实际上,我已经使用测试用户帐户和测试 facebook 应用程序(而不是真正的 facebook 帐户和真正的应用程序)尝试了此代码,并且电子邮件不会 * 被退回。所以它只是发生在一个真实的账户上。我会用任何新发现更新这个问题。 @Searching 如你所见(在我的编辑中)我在电子邮件权限中添加了但收到了错误的数据......我现在已经使用电子邮件权限完成了单独的请求,该请求有效。感谢您的提示 【参考方案1】:

我找到了解决此问题的方法,即执行两个单独的 api 请求,如下所示:

    facebookConnectPlugin.api('/me?fields=email', ["email"], function(apiResponse) 

            //alert("api" + JSON.stringify(apiResponse));
            fb_email = apiResponse.email;
            alert("fb_email" +fb_email); //email being retrieved successfully
            facebookConnectPlugin.api('/me?fields=id, name, link, picture', ["public_profile"],function(data) 
                 alert("data" + JSON.stringify(data));

                 var fb_user_id = data.id;
                 var fb_name = data.name;
                 var fb_picture_url = data.picture.data.url;
                 var fb_user_link = data.link;

                 alert("fb_user_id" + fb_user_id);          
                 alert("fb_name" + fb_name);
                 alert("fb_picture_url" + fb_picture_url);
                 alert("fb_user_link" + fb_user_link);
                 //do stuff with facebook user data here
             

             ,function(error)  
                   //api call failed
                   alert("api call Failed: " + JSON.stringify(error));
             ); //end api                          
   

   ,function(error)    

            alert("email api call Failed: " + JSON.stringify(error));
   ); //end api    

这很完美!

【讨论】:

以上是关于Facebook 电子邮件从 phonegap facebookConnect 插件返回为未定义的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 phonegap 从 Facebook API 获取朋友出生日期列表

从使用 Phonegap 构建的 iOS 应用程序发布到 Facebook 墙

Phonegap Facebook 插件 - 从 Android 设备中删除应用程序后密钥哈希无效

Phonegap/ngCordova iOS Facebook 登录 ionic 不成功

Phonegap 3.5 + Facebook 插件错误它说“找不到 FacebookSDK/FacebookSDK.h 文件”

使用cordova获取facebook用户资料