gpt4 book ai didi

c# - Windows Phone Live SDK API - 重新启动应用程序后获取新的 session 对象

转载 作者:太空狗 更新时间:2023-10-29 22:23:19 24 4
gpt4 key购买 nike

所以我成功地将我的 Windows Phone 8 应用程序连接到 Live API,我也成功地从我的 hotmail 帐户读取数据。

我可以访问所需的客户端 ID 和实时访问 token 。

但是当我退出并重新启动我的应用程序时,我丢失了对 session 和客户端对象的所有引用,我必须重新启动该过程。

我不想用网络掩码惹恼用户,因为他必须再次同意他在每次启动应用程序时都向我提供所需的权限。但是我也没有找到一种方法来获取对 session 对象的引用而不需要这一步。

登录掩码仅在安装应用程序后第一次显示,之后仅显示上述屏幕。但用户每次都接受这个仍然很烦人。

我已经尝试序列化 session 对象,这是不可能的,因为该类没有标准构造函数。

也许可以使用实时访问 token 创建一个新 session ,但我还没有找到这样做的方法。

有什么想法吗?我做错了什么,我知道有一种方法可以在不提示用户的情况下再次登录。我感谢每一个想法。

我使用的一些代码:

    /// <summary>
/// This method is responsible for authenticating an user asyncronesly to Windows Live.
/// </summary>
public void InitAuth()
{
this.authClient.LoginCompleted +=
new EventHandler<LoginCompletedEventArgs>(this.AuthClientLoginCompleted);

this.authClient.LoginAsync(someScopes);
}

/// <summary>
/// This method is called when the Login process has been completed (successfully or with error).
/// </summary>
private void AuthClientLoginCompleted(object sender, LoginCompletedEventArgs e)
{
if (e.Status == LiveConnectSessionStatus.Connected)
{
LiveConnector.ConnectSession = e.Session; // where do I save this session for reuse?
this.connectClient = new LiveConnectClient(LiveConnector.ConnectSession);

// can I use this access token to create a new session later?
LiveConnector.LiveAccessToken = LiveConnector.ConnectSession.AccessToken;

Debug.WriteLine("Logged in.");
}
else if (e.Error != null)
{
Debug.WriteLine("Error signing in: " + e.Error.ToString());
}
}

我尝试使用 LiveAuthClient.InitializeAsync - 方法在重新启动应用程序后在后台登录,但 session 对象保持为空:

// this is called after application is restarted
private void ReLogin()
{
LiveAuthClient client = new LiveAuthClient(LiveConnector.ClientID);
client.InitializeCompleted += OnInitializeCompleted;
client.InitializeAsync(someScopes);
}


private void OnInitializeCompleted(object sender, LoginCompletedEventArgs e)
{
Debug.WriteLine("***************** Inititalisation completed **********");
Debug.WriteLine(e.Status); // is undefined
Debug.WriteLine(e.Session); // is empty
}

有谁知道我如何在重新启动应用程序后访问新 session ?

最佳答案

在整整两天搜索我所犯的错误之后,我终于发现了我做错了什么:我必须使用 wl.offline_access 范围才能完成这项工作!

让我在这里引用另一个用户的话:

“如果您的应用程序使用 wl.offline_access 范围,那么 live:SignInButton 控件会为您保存它并自动加载它。只需使用 SessionChanged 事件来捕获 session 对象。这样用户只需登录一次。 “(参见 WP7 how to store LiveConnectSession during TombStoning?)

现在一切又变得有趣了。不敢相信这就是问题所在。测试和工作。不错!

关于c# - Windows Phone Live SDK API - 重新启动应用程序后获取新的 session 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13212120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com