2014-03-25 75 views
0

我一直在使用鈦合金獲得訪問令牌 - 合金鈦

index.js

// Use the Alloy.Globals.Facebook namespace to make Facebook module API calls 

var facebookModule = Alloy.Globals.Facebook; 

//set facebook app id 

facebookModule.appid = Ti.App.Properties.getString("ti.facebook.appid"); 



//set permissions i.e what data I want 

facebookModule.permissions = ['user_friends','user_photos']; 



// Do not force a facebook html popover but use the native dialog if possible 

facebookModule.forceDialogAuth = false; 

//invoke method onto button from module 

$.fbButton.style = facebookModule.BUTTON_STYLE_WIDE; 


$.index.open(); 

在我index.js控制器我有這個代碼段建立了一個應用程序,它執行和我呈現在登錄屏幕上。

我然後落入2個問題:

1)「FB會話:如果只從單個線程使用」 2)我無法獲得訪問令牌。

不確定如何解決這兩個問題,因爲內置登錄函數有它自己的事件處理程序。

乾杯

回答

1

像你說的,內置的登錄功能確實有它自己的處理程序..所以你應該監聽事件的變化,這樣的事情:

facebookModule.addEventListener('login', function(e) { 
    if (e.success) { 
     Ti.App.Properties.setString('face_token', facebookModule.getAccessToken()); 
     // DO SOMETHING WITH THE TOKEN - open new window, auth the user... 
    } 
}); 

如果你嘗試獲得訪問標記在登錄事件被觸發之前,你最終會變得糟糕。 現在關於單線程的事情..我確實遇到過這個問題。我不確定我做了什麼來解決它,但我認爲這可能與打開多個窗口或允許多個呼叫的事件有關到facebook API。嘗試檢查你是否關閉你的窗口,以及是否多次調用登錄函數。

讓我知道,如果這對你有用。祝你好運。

+0

解決了這兩個問題。謝謝。如果您切換模擬器而不點擊「重置內容和設置」,則會導致單線程事件。嘆氣,我希望鈦會記錄這些事情,會爲我節省很多時間。 – bobo2000

+0

您是否知道將JSON對象從一個控制器傳遞給另一個控制器的最佳方式? – bobo2000