我需要使用javascript sdk通过facebook登录并检索用户的电子邮件ID和一般信息。
这是我的代码。请告诉我我哪里出错:
<script>
window.fbAsyncInit = function () {
FB.init({ appId: 'your_app_id', status: true, cookie: true,
xfbml: true
});
FB.getLoginStatus(function (response) {
if (response.session) {
greet();
}
});
};
(function () {
var e = document.createElement('script');
e.type = 'text/javascript';
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
} ());
function greet() {
FB.api('/me', function (response) {
alert('Welcome, ' + response.name + "!");
alert('Your email id is : '+ response.email);
}
);
}
</script>
答案 0 :(得分:0)
我认为你错过了getLoginStatus()的登录部分。如果没有登录,则无法以email
权限提示用户。这里有一些帮助代码可以帮助您指明正确的方向。
FB.getLoginStatus(function (response) {
if (response.status=== 'connected') {
greet();
} else {
FB.login(function(response){/*do something*/},{scope:'email`});
}
});
同样response.session
适用于旧的oauth,而不是新的oauth2。请参阅:
http://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/
https://developers.facebook.com/docs/reference/api/permissions/