我正在开发一个通用Windows应用程序(Windows 10),我有一个“双层”应用程序:在物联网设备(例如Raspberry Pi 2)上它只显示内容,但在所有其他设备上(PC,笔记本电脑) ,智能手机等)你有一些像显示数据的控制器。
我想要实现的功能之一是控制器部件中的Windows Live登录,以在Display-IoT-Part中获取日历信息。为此我给用户提供了使用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 添加到接收RefreshToken的范围。
我对 OAuth2.0 并不熟悉,而且SDK / API正在建立在OAuth上,所以有人知道什么,我做错了什么或者我该如何处理它?< / p>
我非常感谢所有善意和有用的答案!
PS:我使用的是Live SDK 5.6而不是新的OneDrive API,因为它无法访问日历信息
答案 0 :(得分:2)
wl.offline_access
在这种情况下,它会讨论用户授权并允许应用在用户不在线时(当用户离线时,而不是计算机/装置)。
这并不意味着应用程序会在系统离线时登录用户,但会要求用户在用户不在场时允许应用程序正常工作。
即使我使用Live SDK来获取我之前的一个项目中的用户数据,但是日历必须使用Office365。现在你甚至可以使用Outlook API
虽然我们使用loginResult.Session.AccessToken获取Access Token但我不认为为WinRT应用程序生成了refreshToken。