我想在Windows Phone 7 App上使用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构造函数中使用,以便在我的应用程序中启用与MS API的通信Hotmail API。
LiveConnectClient client = new LiveConnectClient(_session);
我的问题是我想以某种方式保存该会话,以便当应用程序被逻辑删除并重新获得焦点时,我不希望用户再次请求许可 - 他已经给了我这个。我自己想通了返回的会话包含一个AccessToken,RefreshToken和Expires属性(我知道那是什么,这不是问题)。如何在以后的通话中使用该信息? Microsoft的文档在此结束,我找不到任何有用的信息。
我找到了2个解决方法:但我真的不想使用那些变通方法。我相信/希望有更好的解决方案。
答案 0 :(得分:6)
看起来答案如下
确保您的应用程序包含wl.signin和wl.offline_access范围。
- 醇>
如果您没有使用SDK中提供的登录控件,则应始终在应用启动时调用LiveAuthClient.InitializeAsync。 如果InitializeAsync未返回,则仅调用LiveAuthClient.LoginAsync 有效的会话。
这些步骤将确保您无需接收刷新令牌 在第一次之后提示登录或同意。