即使我已经在应用的扩展权限中添加了电子邮件,我也无法获取用户的电子邮件地址。
这是我在编辑应用详情时获得的预览框
但我无法获取登录用户的电子邮件地址。
这是我用于获取用户信息的网址
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"
}
有什么想法吗?
答案 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"});