如何使用Facebook pythonsdk从访问令牌获取用户的电子邮件

2024-09-30 05:21:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试为我正在开发的应用程序实现Facebook登录。在

我正在获取这样的访问令牌:

<!DOCTYPE html>
<html>
<head></head>
<body>
  <script>
window.fbAsyncInit = function() {
    FB.init({
      appId      : '[Redacted]',
      xfbml      : true,
      version    : 'v2.6'
    });

    FB.getLoginStatus(function(response) {
    if (response.status === 'connected') {
        window.location = "http://[my domain]/FBloginAuth?"+FB.getAuthResponse()["accessToken"]
    } else {
        window.location = encodeURI("https://www.facebook.com/dialog/oauth?scope=email&client_id=[redacted]&redirect_uri=http://[my domain]/FBloginAuth&response_type=token");
    }
});

  };

  (function(d, s, id){
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) {return;}
    js = d.createElement(s); js.id = id;
    js.src = "http://connect.facebook.net/en_US/sdk.js";
    fjs.parentNode.insertBefore(js, fjs);
  }(document, 'script', 'facebook-jssdk'));
  </script>

  <div id="status"></div>

</body>
</html>

然后,我的服务器从url中搜索访问令牌,如下所示(python2,因为我必须支持googleoauth SDK,它似乎不支持python3):

^{pr2}$

我知道这不会解析url中有变量的情况。这不是重点。现在我正在亲手喂令牌。代码呕吐:

{u'id': u'[redacted]', u'name': u'[redacted]'}

我的问题是,当我设置了请求令牌的范围时,为什么电子邮件没有出现在响应中。另外,我应该怎么做才能收到电子邮件?在


Tags: idhttpfacebookfbifresponsehtmljs
1条回答
网友
1楼 · 发布于 2024-09-30 05:21:24

确保

a)用户实际上已经向你的应用程序授予了权限(请求/me/permissions确认,使用相同的访问令牌),并且

b)他们的电子邮件地址通过Facebook验证。(显然不是自动使用用于注册的电子邮件地址的情况。)

相关问题 更多 >

    热门问题