[英]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個解決方法:
但是我真的不想使用該解決方法。 我相信/希望有更好的解決方案。
看起來答案如下
確保您的應用程序同時包含wl.signin和wl.offline_access范圍。
如果未使用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.