2012-11-03 57 views
2

我想從我的應用程序提交狀態到Window的實時,用戶啓動應用程序,被要求給我的應用程序執行此操作的權限,並且一旦授予我有活動會話對象,我可以更新其狀態。這工作完美。 但是,如果用戶關閉應用程序並再次打開應用程序,則會再次要求他們批准我的應用程序以執行此操作。每次。Android - Windows Live API,用戶每次都必須登錄?

現在,活動文檔說你可以獲得刷新令牌(我這樣做)來防止這種情況,問題是訪問令牌和刷新令牌都在LiveConnectSession中烘焙,所以當我的應用程序關閉時,此對象被銷燬並要求用戶再次給予應用權限。

所以想什麼,我知道的是,如果任何人知道重新創建對象的方式應用程序啓動時(如果我保存令牌和刷新令牌)或保存對象的onDestroy()的方式..

Iterable<String> scopes = Arrays.asList("wl.signin", "wl.share", "wl.offline_access"); 
this.auth.login(this, scopes, this); 

public void onAuthComplete(LiveStatus status, LiveConnectSession session, Object userState) { 
    if(status == LiveStatus.CONNECTED) { 
     Log.d("", "Signed in."); 
     client = new LiveConnectClient(session); 

回答

2

堅持使用Windows Phone相同的問題.. 我試着序列化會話,由於會話類沒有默認構造函數,因此無法工作。

編輯: 經過兩天的搜索,我發現我做錯了,我終於發現我做錯了:我必須使用wl.offline_access範圍來完成這項工作!

現在一切都很有趣。不能相信這是問題所在。測試&工作。太好了!

正如我所看到的,您正在使用脫機範圍,所以這對您來說不是問題。

但我發現了更多: 有兩種方式連接到Live(在C#中,我不知道這個方法是如何在Java調用):

  • 使用LiveConnectClient.LoginAsync(其帶有GUI)
  • 使用LiveConnectClient.InitializeAsync(這是UI少,在後臺連接)

因此,如果您的應用程序已經連接,使用第二個,以獲取新的會話對象。 AFAIK,此對象有效期爲一年,之後用戶必須重新登錄。但請不要在此引用我的意見。

請讓我知道這對你的作品。

+0

我們必須在這裏失蹤......他們無法期望用戶驗證每一次.. – crazyfool

+0

我看到一個應用程序可以登錄而不顯示錶單,所以它必須以某種方式可能。 使用所需值初始化會話對象也是不可能的,因爲它們是隻讀的。 有些用戶提到,如果用戶已連接,調用初始化函數而不是登錄函數就足夠了。這個函數也是異步的,應該爲我們提供一個新的會話對象。 我已經試過這個,但最終得到一個空的會話對象,但它可能適用於你,我只是做錯了什麼。這是我的代碼和我的問題:http://tinyurl.com/csmh5eb – FloppyNotFound

相關問題