javascript - Facebook 登录仅显示按钮

标签 javascript jquery html facebook

我正在检查用户登录状态。 我使用了 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 文本项,您将看到某些内容的唯一方法是。 .所有这些我都无法通过您的代码来判断。

  1. 初始化 FB SDK 并进行所有正确设置
  2. 用户按下执行此代码的登录:

    <fb:login-button scope="public_profile,email" onlogin="checkLoginState();"> </fb:login-button>

  3. 以上代码为您提供了 facebook 提供的常规范围(要获得更多范围,您必须通过 facebook 的请求流程,仅供引用)。如您所见,按下此按钮后操作描述为 onlogin完成后我们将执行函数checkLoginState()即:

function checkLoginState() { FB.getLoginStatus(function(response) { statusChangeCallback(response); }); }

  1. 这会获取登录“状态”,然后调用函数 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.'; } }

  2. 现在上面的代码,如果已连接,将调用您的 testAPI()将拉低响应的功能。它将尝试找到一个 id 为 status 的 HTML 文档。 ,如果您没有创建它,它将不会显示任何内容。

如果您确定您已完成所有这些步骤并正确执行,那么我建议您输入几条 console.log() 语句并在您的浏览器中查看 Google Chrome 控制台或 Javascript 控制台,看看您处于什么状态并且您的函数实际上正在被调用。

如果您不确定,请仔细检查 Facebook 登录页面。这是很好的文档。

关于javascript - Facebook 登录仅显示按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31758182/

相关文章:

javascript - 哪些html标签支持onload javascript事件?

javascript - 仅延迟加载整个页面 Javascript

javascript - 使用 AJAX 将数据发布到 API

javascript - 如何在 JQuery 中为 addClass/removeclass 设置动画

javascript - jQuery 显示和隐藏表格 td 中的元素

javascript - Jquery从选项菜单获取表单值

javascript - 为什么从书签执行js片段时所有样式都丢失了?

javascript - 如何在 AngularJS 中指定默认排序顺序

html - 添加背景并居中,不重复

javascript - 将此功能定位到特定的 div