Facebook oauth检索用户电子邮件
我正在使用Facebook Javascript SDK获取oauth令牌并从FB检索所有数据:Facebook oauth检索用户电子邮件,facebook,facebook-graph-api,Facebook,Facebook Graph Api,我正在使用Facebook Javascript SDK获取oauth令牌并从FB检索所有数据: function login() { FB.api('/me', function (response) { alert('You have successfully logged in, ' + response.name + ", " + response.email + "!"); }); 我检索所有基本信息(全名、工作、学校、ID
function login() {
FB.api('/me', function (response) {
alert('You have successfully logged in, ' + response.name + ", " + response.email + "!");
});
我检索所有基本信息(全名、工作、学校、ID…),但不检索电子邮件(response.EMAIL==未定义)
我知道可以在基本信息内访问电子邮件(不要求“电子邮件”权限),我该怎么做?不可能,用户必须授权您的应用程序访问其电子邮件信息,或者在其他情况下,如果用户允许每个人在其隐私设置中查看其电子邮件,则可以访问该电子邮件。您需要按如下方式明确获取电子邮件:
var url = '/me?fields=name,email';
FB.api(url, function (response) {
alert(response.name);
alert(response.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更改为:
如果您可以更改为使用承诺链接,这对我很有用:
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 + "!");
});
}
});
我也有同样的情况。当需要电子邮件时,我无法使用我的帐户使用fb oauth登录,因为我不允许我的电子邮件公开访问。在哪里授予获取用户电子邮件的权限?转到facebook开发者控制台。在应用程序审阅下的控制台上,显示默认情况下已批准电子邮件。然而,我仍然没有得到一个Facebook应用程序的电子邮件地址,而另一个还可以。我找不到电子邮件的任何特殊设置。
var url = '/me?fields=name,email';
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 + "!");
});
}
});