我正在使用Facebook Javascript SDK获取oauth令牌,并从FB检索所有数据:
function login() {
FB.api('/me', function (response) {
alert('You have successfully logged in, ' + response.name + ", " + response.email + "!");
});我检索所有基本信息(全名、工作、学校、ID..)而不是电子邮件(response.email ==未定义) !!
我知道在基本信息中访问电子邮件是可能的(不要求“电子邮件”权限),我该怎么做?
发布于 2011-04-19 09:05:36
您需要按如下方式显式获取电子邮件:
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 */发布于 2016-04-26 21:17:37
首先,让你的应用程序上线,向公众开放。然后你必须授予权限来获取用户的'email‘,这是应用程序默认不允许的。之后,应该按如下方式更改登录方法。
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';发布于 2017-01-30 01:40:26
如果您可以更改为使用promise链接,这对我很有效:
fb.login({scope:'email'}).then(function (resp) {
if (resp.status === 'connected') {
fb.api('/me', 'get', {fields:'id,email,first_name,gender,...'}).then(function (response) {
alert('You have successfully logged in, ' + response.name + ", " + response.email + "!");
});
}
});https://stackoverflow.com/questions/5707189
复制相似问题