我正在开发一款通用的Windows应用程序(Windows 10),其中我有一个“双层”应用程序:在物联网设备上(例如Raspberry Pi 2)上,它只显示内容,但在所有其他设备上(PC、笔记本电脑、智能手机等),你可以得到类似于所显示数据的控制器。
我想要实现的功能之一是使用Windows Live登录控制器部分,以获取显示的IoT部分的日历信息。为此,我向用户提供了使用Windows Live登录的机会,如下所示:
我的问题是,我无法从LiveConnectSession中获取可以存储RefreshToken的字段。但是所有我阅读过的文章都告诉我,只需要将wl.offline_access添加到范围中即可接收刷新令牌。
我想要实现的功能之一是使用Windows Live登录控制器部分,以获取显示的IoT部分的日历信息。为此,我向用户提供了使用Windows Live登录的机会,如下所示:
LiveAuthClient auth = new LiveAuthClient();
LiveLoginResult loginResult = await auth.LoginAsync(new string[] { "wl.signin", "wl.calendars", "wl.offline_access" });
if (loginResult.Status == LiveConnectSessionStatus.Connected)
{
//Save the AccessToken from loginResult.Session.AccessToken
TokenHandler.Save(loginResult.Session.AccessToken); //AccessToken is quite accessable right here
//But as far as I know I should save the RefreshToken, but the Session has no field for it
}
我的问题是,我无法从LiveConnectSession中获取可以存储RefreshToken的字段。但是所有我阅读过的文章都告诉我,只需要将wl.offline_access添加到范围中即可接收刷新令牌。
我对OAuth2.0并不很熟悉,而且SDK / API是基于OAuth构建的,所以有人知道我做错了什么或者我该如何处理吗?
非常感谢所有善意和有帮助的回答!
PS:我使用的是Live SDK 5.6而不是新的OneDrive API,因为它无法访问日历信息。
RefreshTokenIfNeeded()
方法。因此,我认为刷新令牌并没有暴露出来,因为它是自动处理的。 - Romasz#if !WINDOWS_STORE
。 - Romasz