簡體   English   中英

將LiveConnectSession存儲在WP7中

[英]Store LiveConnectSession in WP7

我想在Windows Phone 7應用程序上使用Hotmail API。 因此,我必須授予對我的移動應用程序的訪問權限。 我使用Microsoft Live Connect API做到了這一點,一開始確實很不錯。 我使用以下代碼進行身份驗證:

string[] requiredScope = { "wl.signin", "wl.calendars_update", "wl.offline_access" };
LiveAuthClient auth = new LiveAuthClient(Configuration.ClientID);
auth.LoginCompleted += new EventHandler<LoginCompletedEventArgs>(authInitializeCompletedHandler);
auth.LoginAsync(requiredScope);

ClientID是我從MS獲得的用於注冊我的應用的ID。 我的回調看起來很簡單:

private void authInitializeCompletedHandler(object sender, LoginCompletedEventArgs e)
{
    if (e.Status == LiveConnectSessionStatus.Connected)
    {
        this._session = e.Session; // Session hat AccessToken und RefreshToken
        this._isAuthorized = true;
        callDelegates();
    }
}

如果該調用成功(並且當前成功,則可以正常工作),我將存儲檢索到的Session。 可以在LiveConnectClient構造函數中使用此會話,以在我的應用程序Hotmail API中啟用與MS API的通信。

LiveConnectClient client = new LiveConnectClient(_session);

我的問題是我想以某種方式保存該會話,以便當應用程序被刪除並使其焦點重新指向時,我不希望用戶再次請求權限-他已經給了我。 我自己弄清楚返回的會話包含一個AccessToken,RefreshToken和Expires屬性(我知道那是什么,這不是問題)。 如何在以后的通話中使用該信息? Microsoft的相關文檔到此結束,我找不到任何有用的信息。

我發現2個解決方法:

  • 實時連接按鈕 :不應走這條路,因為我不想只顯示會話變量就顯示實時按鈕。
  • RESTful API :這將要求我完全重寫到目前為止所做的事情,因為一切都依賴於LiveConnectClient(這使得通信非常容易)。

但是我真的不想使用該解決方法。 我相信/希望有更好的解決方案。

看起來答案如下

  1. 確保您的應用程序同時包含wl.signin和wl.offline_access范圍。

  2. 如果未使用SDK中提供的登錄控件,則應在應用啟動時始終調用LiveAuthClient.InitializeAsync。 如果InitializeAsync沒有返回有效的會話,則僅調用LiveAuthClient.LoginAsync。

這些步驟將確保您收到刷新令牌,因此無需在第一次后提示登錄或同意。

來自: http : //social.msdn.microsoft.com/Forums/zh-CN/messengerconnect/thread/6df1f31d-a22c-469c-b9f4-5c79e0882701

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM