我正在检查用户登录状态。 我使用了 fb 提供的 facebook 代码,但它只显示登录按钮。我想检查用户是否已经登录。
function testAPI() {
console.log('Welcome! Fetching your information.... ');
FB.api('/me', function(response) {
console.log('Successful login for: ' + response.name);
document.getElementById('status').innerHTML =
'<br/>Thanks for logging in, ' + response.name + '<br/>User Id: '+ response.id + '<br/>Email Id: '+ response.email + '!';
//window.location.replace('abc.html');
});
FB.getLoginStatus(function(response) {
statusChangeCallback(response);
});
}
最佳答案
您的代码与我发现发布的facebook 代码不一样here .它很接近,但有几个关键差异和需要注意的事项。您的更多文件在这里会很有帮助。请确保您已从 Facebook 收到您的应用程序的 App ID 并进行了注册。但需要明确的是,您似乎在错误的时间检查了登录状态。这只是一个函数,我们不知道它在哪里被调用,或者它是否模仿我提供的链接上的流程是这样的(尽管这不是它们在 facebook 给出的代码中的组织方式)。另外,如果您有一个带有 id='status'
的 HTML 文本项,您将看到某些内容的唯一方法是。 .所有这些我都无法通过您的代码来判断。
- 初始化 FB SDK 并进行所有正确设置
用户按下执行此代码的登录:
<fb:login-button scope="public_profile,email" onlogin="checkLoginState();"> </fb:login-button>
以上代码为您提供了 facebook 提供的常规范围(要获得更多范围,您必须通过 facebook 的请求流程,仅供引用)。如您所见,按下此按钮后操作描述为
onlogin
完成后我们将执行函数checkLoginState()
即:
function checkLoginState() {
FB.getLoginStatus(function(response) {
statusChangeCallback(response);
});
}
这会获取登录“状态”,然后调用函数
statusChangeCallback(response)
:function statusChangeCallback(response) { console.log('statusChangeCallback'); console.log(response); // The response object is returned with a status field that lets the // app know the current login status of the person. // Full docs on the response object can be found in the documentation // for FB.getLoginStatus(). if (response.status === 'connected') { // Logged into your app and Facebook. testAPI(); } else if (response.status === 'not_authorized') { // The person is logged into Facebook, but not your app. document.getElementById('status').innerHTML = 'Please log ' + 'into this app.'; } else { // The person is not logged into Facebook, so we're not sure if // they are logged into this app or not. document.getElementById('status').innerHTML = 'Please log ' + 'into Facebook.'; } }
现在上面的代码,如果已连接,将调用您的
testAPI()
将拉低响应的功能。它将尝试找到一个 id 为status
的 HTML 文档。 ,如果您没有创建它,它将不会显示任何内容。
如果您确定您已完成所有这些步骤并正确执行,那么我建议您输入几条 console.log() 语句并在您的浏览器中查看 Google Chrome 控制台或 Javascript 控制台,看看您处于什么状态并且您的函数实际上正在被调用。
如果您不确定,请仔细检查 Facebook 登录页面。这是很好的文档。
关于javascript - Facebook 登录仅显示按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31758182/