0

我正在編程apache cordova中的應用程序,並且我正在使用facebook javascript sdk與Facebook進行通信。我的問題是,當我導航到不同的html文件時,我登錄Facebook後,我必須重新初始化FB.init,然後才能使用它,這會導致先前保存的登錄信息被刪除。當導航到新的html頁面時Apache Cordova Facebook Javascript SDK問題

這是我使用的initailize與鏈接到它的一個JavaScript我的啓動頁面上的Facebook SDK什麼...

window.fbAsyncInit = function() 
{ 
    FB.init(
    { 
     appId  : '1680542808897877', 
     cookie  : true, 
     xfbml  : true, 
     version : 'v2.5' 
    }); 
}; 

(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')); 

然後我用了window.location =「test.html的」導航到另一個html文件,它有不同的js文件。所以,現在,如果我嘗試,而無需再次初始化的Facebook SDK這樣執行的功能...

FB.api('me/picture', function (response) 
    { 
     var picture = response; 
    }) 

我得到一個錯誤說沒有定義FB。如果我將包含來自上面的Facebook初始化代碼包含在鏈接到新的html文件FB的js文件中,但是接收到錯誤,說明沒有定義響應。

有沒有辦法在另一個js文件中初始化Facebook的sdk,但不知何故將先前的登錄信息傳遞給它?

回答

0

從Facebook創建一個js API並將其包含在您的所有html中。

fbsdk.js

window.fbAsyncInit = function(){ 
FB.init({ 
    appId: '1680542808897877', 
    cookie: true, 
    xfbml: true, 
    version: 'v2.5' 
}); 
}; 

(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')); 
+0

試過這個...登錄到起始頁就好了,然後導航到另一個頁面和Facebook試圖使調用API,並得到一個錯誤回來說:「必須使用活動的訪問令牌來查詢有關當前用戶的信息。」 – ChumpStick