javascript - 从 Facebook JS API、问题或功能获取电子邮件?

标签 javascript facebook facebook-javascript-sdk

我使用以下内容作为引用:

https://developers.facebook.com/docs/facebook-login/web

但是,我似乎无法提取电子邮件。我不确定这是否是因为用户设置不允许发送电子邮件,或者这是我调用的电话的问题。

这是我正在使用的代码:

function checkLoginState() {
    FB.getLoginStatus(function(response) {
      statusChangeCallback(response);
    });
  }


function statusChangeCallback(response) {
    console.log('statusChangeCallback');
    console.log(response);
    // The response object is returned with a status field that lets the
    // app know the current login status of the person.
    // Full docs on the response object can be found in the documentation
    // for FB.getLoginStatus().
    if (response.status === 'connected') {
      // Logged into your app and Facebook.
      testAPI();
    } else if (response.status === 'not_authorized') {
      // The person is logged into Facebook, but not your app.
      document.getElementById('status').innerHTML = 'Please log ' +
        'into this app.';
    } else {
      // The person is not logged into Facebook, so we're not sure if
      // they are logged into this app or not.
      document.getElementById('status').innerHTML = 'Please log ' +
        'into Facebook.';
    }
  }

function testAPI() {
    console.log('Welcome!  Fetching your information.... ');
    FB.api('/me', function(response) {

      console.log('Successful login for: ' + response.name);
      document.getElementById('status').innerHTML =
        'Thanks for logging in, ' + response.name + '!';
      var result = JSON.stringify(response);
      alert(response.email)

    }, {scope: 'public_profile,email,first_name,last_name'});


<fb:login-button data-scope="email" scope="public_profile, email" onlogin="checkLoginState();">


</fb:login-button>

我可以正常登录,但我没有收到任何电子邮件。我不知道这是用户设置问题还是代码问题。

最佳答案

FB.api 没有范围参数,并且您已经在登录按钮中定义范围。也没有名为“first_name”或“last_name”的范围,这些只是用户表中的字段。

无论如何,从 v2.4 开始,您必须指定 API 端点中的字段:https://developers.facebook.com/docs/apps/changelog#v2_4

例如:

FB.api('/me', {fields: 'email,first_name,last_name'}, function(response) {
  ...
});

您可以在文档中阅读有关 FB.api 的更多信息:https://developers.facebook.com/docs/javascript/reference/FB.api

顺便说一句,有一篇关于使用 JS SDK 登录的文章,如果您需要更多信息:http://www.devils-heaven.com/facebook-javascript-sdk-login/

关于javascript - 从 Facebook JS API、问题或功能获取电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32369215/

相关文章:

javascript - 动态添加 jQuery multidatepicker "addDisabledDates"属性

ruby-on-rails - facebook 身份验证后与门卫进行身份验证

angularjs - Facebook 无法识别我的 SSL 证书

javascript - 在重新加载时停止缓存窗口对象

javascript - 为什么removeClass()和addClass()不起作用?

JavaScript - 递增值属性

java - 导入成功后Facebook SDK导入报错

iphone - iPhone 上的 Facebook 登录按钮

asp.net - Facebook C# SDK : "Invalid signed request" exception when parsing fbsr cookie

facebook-iframe - FB.getLoginStatus永远不会在Facebook的JavaScript SDK中触发回调函数