我有一个 Facebook 应用程序,并且使用 JavaScript JDK。
我正在请求电子邮件许可:
对于新用户,我重定向到授权窗口:
top.location = 'https://graph.facebook.com/oauth/authorize?client_id=' + APP_ID + '&scope=email&redirect_uri=XXX';
然后尝试获取它:
FB.getLoginStatus(function (response) {
if (response.authResponse) {
FB.api('/me', function (response) {
console.log(response.email);
}
}
}
对于现有用户(如果他们的电子邮件未定义),我什至尝试重新请求电子邮件权限并重新获取它:
FB.login(function(response){
if(response.status == 'connected'){
FB.api('/me?fields=email,id', function(response) {
console.log(response.email);
});
}
},{scope: 'email'});
问题是,对于某些用户,我在/me 的响应中收到电子邮件,而对于其他用户,其未定义。 可能出了什么问题?
谢谢!
最佳答案
这不是问题的解决方案,但我最近已经解决了它以使其发挥作用。
自此,所有 facebook 用户都被 facebook 分配了一个电子邮件地址,其 ID 为:
[username]@facebook.com
,如果请求未返回用户的电子邮件地址,我决定使用此电子邮件。
即
$email = isset($fb_user["email"])?$fb_user["email"]:$fb_user["username"] . "@facebook.com";
再次强调,这不是解决方案,只是一种解决方法。
希望这有帮助。
关于facebook - 某些用户的电子邮件未从 Facebook API 调用返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13886684/