我正在使用Facebook Javascript SDK来获取oauth令牌并从FB中检索所有数据:
function login() {
FB.api('/me', function (response) {
alert('You have successfully logged in, ' + response.name + ", " + response.email + "!");
});
我检索所有基本信息(全名,工作,学校,ID ..)但不是EMAIL(response.email == undefined)!!
我知道可以在基本信息中访问电子邮件(不要求'电子邮件'权限),我该怎么做?
答案 0 :(得分:65)
您需要明确地发送电子邮件,如下所示:
var url = '/me?fields=name,email';
FB.api(url, function (response) {
alert(response.name);
alert(response.email);
});
要获取电子邮件地址,需要电子邮件权限。所以代码可能看起来像(还有其他选项,如注册按钮,登录按钮..)
FB.login(function (response) {
if (response.session) {
var url = '/me?fields=name,email';
FB.api(url, function (response) {
alert(response.name);
alert(response.email);
});
}
else {
alert("User did not login successfully");
}
}, { scope: 'email' }); /* perms changed to scope */
答案 1 :(得分:5)
首先让您的应用直播,向公众开放。然后,您必须授予获取用户“电子邮件”权限的权限。这是应用程序不允许默认的。之后,登录方法应更改如下。
function checkLoginState() {
FB.getLoginStatus(function(response) {
statusChangeCallback(response);
console.log('Welcome! Fetching your information.... ');
var url = '/me?fields=id,name,email';
FB.api(url, function(response) {
alert(response.name + " " + response.id + " " +response.email);
}, {scope: 'email'});
});
}
如果不需要字段 id ,请将变量 url 更改为:
var url = '/me?fields=name,email';
答案 2 :(得分:1)
如果您可以更改为使用承诺链,这对我有用:
docker-machine ip default
答案 3 :(得分:-3)
用户不得不授权您的应用程序访问其电子邮件信息,或者在其他情况下,如果用户允许其电子邮件在其隐私设置中被所有人查看,则可以访问该文件。