登录用户的电子邮件地址

时间:2012-03-22 10:07:13

标签: facebook email

即使我已经在应用的扩展权限中添加了电子邮件,我也无法获取用户的电子邮件地址。

这是我在编辑应用详情时获得的预览

Preview Box

但我无法获取登录用户的电子邮件地址。

这是我用于获取用户信息的网址

https://graph.facebook.com/me?fields=first_name,last_name,email,gender&access_token=+accessToken

这是我从facebook获得的数据

{
   "first_name": "Varun",
   "last_name": "Achar",
   "gender": "male",
   "id": "1XXXXXX66660851"
}

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我不知道为什么 Authenticated Referrals 方法对您不起作用,但是您可以通过以下方式获取电子邮件地址并以其他方式获取(您需要停用经过身份验证的推介):

(1)Serveri-Side Authentication - 当facebook加载您的画布页面时,它通过POST到您的画布URL来提供* signed_request *参数。通过它,您可以检查用户是否经过身份验证(如果是,您将获得访问令牌以及有关用户的其他信息,例如他的fb用户ID)。 如果用户未经过身份验证,则将其发送到以下网址:

https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_url=YOUR_REDIRECT_URI&scope=email,publish_stream,etc

当用户返回时,您应该有经过身份验证的签名请求。

(2)Client-Side Authentication - 您可以使用javascript sdk在画布页面中对用户进行身份验证。

获得访问令牌后,您可以通过发出以下请求获取电子邮件地址:

https://graph.facebook.com/me?fields=email

或者从客户端,您可以使用:

FB.api("me?fields=email", function(response) {
    console.log(response);
});

修改

您应该阅读javascript sdk documentation?特别是FB.login part。 它显示了如何使用它并要求更多权限的示例(使用scope参数)

答案 1 :(得分:0)

这就是我最终让它发挥作用的方式。无法让它通过身份验证引用工作,所以必须这样做

FB.login(function(resp)
{
  // Handle the response.
}
, {scope: "email, user_relationships"});