我正在尝试为我的网站实施FacbookSDK 2.8,以下是代码的简化版本。
<button onclick="logout()">Logout</button>
<button onclick="login()">LogIn</button>
<script>
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
setTimeout(() => {
window.fbAsyncInit = () => {
FB.init({
appId: 'xxxxxxx', //My app id here
cookie: true, // enable cookies to allow the server to access
// the session
xfbml: true, // parse social plugins on this page
version: 'v2.8' // use graph api version 2.8
});
checkFBLoginStatus();
}
})
function checkFBLoginStatus() {
FB.getLoginStatus((response) => {
console.log(response)
});
}
function logout() {
FB.logout(function(response) {
console.log(response)
})
}
function login() {
FB.login(function(response) {
console.log(response)
FB.api('/me?fields=id,email,name', function(response) {
console.log(JSON.stringify(response));
});
}, {
scope: 'email'
})
}
function onLoginSuccess() {
FB.getLoginStatus(function(response) {
console.log(response)
})
}
</script>
我在退出和登录时收到回复
以下是我的问题
在FB.api电话上我只获取ID和姓名,而我需要用户电子邮件设置为唯一的用户标识符。
我什么时候可以达到未经授权的条件。如果我登录,我将获得“连接”状态,如果我退出,则“未知”状态。我无法重现未经授权的条件,因此我可以为其编码。
答案 0 :(得分:0)
您应该使用用户的ID来识别他,而不是电子邮件。用户无需收到电子邮件,也可以使用自己的电话号码登录。确保在登录过程/弹出窗口中要求您提供电子邮件权限。另外,请改用此表单:
FB.api('/me', {fields: 'id,email,name'}, function(response) {
console.log(JSON.stringify(response));
});