Facebook JS SDK登录的困惑

Kry*_*ove 0 javascript jquery facebook facebook-graph-api facebook-javascript-sdk

我有两个单独的js文件,domready.jsfb-jssdk.js.

jssdk处理加载sdk和登录.它在用户登录时从response.state返回正确的状态,具体取决于方案.

我感到困惑的是我如何使用FB响应中获得的数据和FB.api来获取用户登录时的名称和电子邮件,并使用jQuery在我的网站上使用它.

编辑: 我想知道如何在fb代码所在的单独的js文件中使用响应的内容,并将其与jQuery事件处理程序一起使用.

因此,如果我有一个名为testAPI()的函数将response.name输出到控制台,那么如何在另一个文件中获取response.name ="Kryptonite Dove"的数据呢?

testAPI()

function testAPI() {
console.log('Welcome!  Fetching your information.... ');
FB.api('/me', function(response) {
    console.log('Good to see you, ' + response.name + '.');
    var state = response.name;
    return response.name;

});
}
Run Code Online (Sandbox Code Playgroud)

一些功能

   $("#id").click(function() {
      if (response.name == "Kryptonite Dove") {
        // Do something
      }
   });
Run Code Online (Sandbox Code Playgroud)

psy*_*nny 5

您正尝试访问response,这是一个不同功能的本地变量(请参阅:https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Closures).因此,您可以做的一件事是将其分配给全局变量,然后在其他函数中访问它.

var saved_response;

function testAPI() {
  console.log('Welcome!  Fetching your information.... ');
  FB.api('/me', function(response) {
      console.log('Good to see you, ' + response.name + '.');
      var state = response.name;
      saved_response = response;

      return response.name;
  });
}



$("#id").click(function() {
   if (saved_response.name == "Kryptonite Dove") {
     // Do something
   }
});
Run Code Online (Sandbox Code Playgroud)