将facebook响应从一个js文件转移到另一个js文件的最佳方法

时间:2015-12-25 05:11:38

标签: javascript node.js facebook google-maps

我想知道传输响应对象的最佳方法,即从Facebook验证用户后,从一个javascript文件到另一个javascript文件。

我想要这样做,因为我想获取用户的朋友位置,这位于我的fb.js文件中,并将其转移到gmap.js文件,我将在其中创建地图并添加标记。

我使用nodeJS作为我的服务器,并使用module.exports将数据从一个文件传输到另一个文件。但在这种情况下,我真的不知道如何出口它。任何转移回复的方式对我都有好处

function login()
{   
  FB.login(function (response) 
  {
      if(response.authResponse)
      {  
          console.log("login successful");
      }
  },{scope: "public_profile,email,user_tagged_places,user_friends" });
}

1 个答案:

答案 0 :(得分:0)

因为您似乎没有听取我自己提供的建议,而此处的其他评论是代码将会转移"你的对象是另一个javscript文件。

这又一次,绝对不是正确的做法。你的问题是什么,据我所知是这样的:你对Facebook(或任何地方)进行ajax调用并得到回复。您现在需要获取此响应对象并将其传递给另一个此时无法访问的javascript文件中的代码。这里要做的正确的事情是制作jaascript文件 - 要么是整个文件,要么是只需要访问的函数。在面向对象的语言中,您可以更改私有级别以使这些函数public,您显然无法在此处执行此操作,因此您有以下几种选择:

- 使用require.js进行类似的操作

// this will be at the top of your javascript file.
// what this is doing is pulling your fb.js file into this file
// and making ever function in fb.js accessible here
define(['javascript/myPathToJsFiles/gmap'],
  function( gmap) {
  // everything in this js file will go in here
  // all of this code has fb and gmap available to use with 'fb' and 'gmap'


  function login()
  {   
      FB.login(function (response) 
      {
          if(response.authResponse)
          {  
              var respFromGmap =  gmap.myFunctionNameInGmapFile(response);
              console.log("login successful");
          }
      },{scope: "public_profile,email,user_tagged_places,user_friends" });
    }
..
..
好吧,如果您只想忽略所有内容并将字符串转移到另一个文件并使它们彼此完全分离,那么这就是代码。我的示例是调用FB.Login然后将响应存储到全局变量,然后可以在任何地方访问全局变量。

FB.login(function (response) 
{
    if(response.authResponse)
    {  
        // if this code is running on a browser replace  GLOBAL with window

        // I can't stress enough how bad of an idea this is , but anyway if
        // you must  use a global var then make sure it has a really long 
        // and really descriptive name to prevent getting mixed up and 
        // overridden
        GLOBAL.facebookLoginResponseObject = response;
    }
}

现在在gmap.js或任何其他js文件中,它本身就是孤独和反社会的,并且无法使用FB.login

访问该代码
fuction useLoginObject(){
   // the "|| {}" just makes sure you won't throw an exception , it will return 
   // an empty object if nothing was found in the global 
   var fbLoginObject = GLOBAL.facebookLoginResponseObject || {};
}