首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Facebook oauth检索用户电子邮件

Facebook oauth检索用户电子邮件
EN

Stack Overflow用户
提问于 2011-04-19 02:27:45
回答 4查看 52.5K关注 0票数 43

我正在使用Facebook Javascript SDK获取oauth令牌,并从FB检索所有数据:

代码语言:javascript
复制
 function login() {
    FB.api('/me', function (response) {            
        alert('You have successfully logged in, ' + response.name + ", " + response.email + "!");

    });

我检索所有基本信息(全名、工作、学校、ID..)而不是电子邮件(response.email ==未定义) !!

我知道在基本信息中访问电子邮件是可能的(不要求“电子邮件”权限),我该怎么做?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-19 09:05:36

您需要按如下方式显式获取电子邮件:

代码语言:javascript
复制
                    var url = '/me?fields=name,email';
                    FB.api(url, function (response) {
                        alert(response.name);
                        alert(response.email);
                    });

要获取电子邮件地址,需要拥有电子邮件权限。因此代码可能看起来像这样(还有其他选项,如注册按钮、登录按钮。)

代码语言:javascript
复制
            FB.login(function (response) {
                if (response.session) {
                    var url = '/me?fields=name,email';
                    FB.api(url, function (response) {
                        alert(response.name);
                        alert(response.email);
                    });
                }
                else {
                    alert("User did not login successfully");
                }
            }, { scope: 'email' }); /* perms changed to scope */
票数 82
EN

Stack Overflow用户

发布于 2016-04-26 21:17:37

首先,让你的应用程序上线,向公众开放。然后你必须授予权限来获取用户的'email‘,这是应用程序默认不允许的。之后,应该按如下方式更改登录方法。

代码语言:javascript
复制
function checkLoginState() {
    FB.getLoginStatus(function(response) {
        statusChangeCallback(response);
        console.log('Welcome!  Fetching your information.... ');
        var url = '/me?fields=id,name,email';
        FB.api(url, function(response) {
             alert(response.name + " " + response.id + " " +response.email);
        }, {scope: 'email'});
    });
}

如果不需要字段id url,请将变量更改为:

代码语言:javascript
复制
var url = '/me?fields=name,email';
票数 8
EN

Stack Overflow用户

发布于 2017-01-30 01:40:26

如果您可以更改为使用promise链接,这对我很有效:

代码语言:javascript
复制
fb.login({scope:'email'}).then(function (resp) {
    if (resp.status === 'connected') {
       fb.api('/me', 'get', {fields:'id,email,first_name,gender,...'}).then(function (response) {
          alert('You have successfully logged in, ' + response.name + ", " + response.email + "!");
       });
    }
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5707189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档