从通用Windows应用程序中的Windows Live SDK接收刷新令牌

Tob*_*ann 6 c# xaml live-sdk win-universal-app

我正在开发一个通用的Windows应用程序(Windows 10),我有一个"双层"应用程序:在IoT设备(例如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
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,我没有从可以存储RefreshTokenLiveConnectSession中获取字段,但是我读到的所有文章都在说,我只需要将wl.offline_access添加到用于接收RefreshToken的范围.

我对OAuth2.0并不熟悉,并且SDKs/API正在建立在OAuth上,所以有人知道什么,我做错了什么或我如何处理它?

我真的很感谢所有善意和有用的答案!

PS:我使用的是Live SDK 5.6,而不是新的OneDrive API,因为它无法访问日历信息

Jer*_*rin 2

wl.offline_access

在本例中,它讨论的是用户授权,并允许应用程序在用户不在场时(当用户离线时,而不是计算机/设备离线时)获得用户的授权来工作。
这并不意味着应用程序会在系统离线时登录用户,而是会请求用户允许应用程序在用户不在场时运行。
甚至我也曾在我的早期项目之一中使用 Live SDK 来获取用户数据,但对于日历,必须使用 Office365。现在您甚至可以使用Outlook API 虽然我们确实使用 loginResult.Session.AccessToken 获取访问令牌,但我认为不会为 WinRT 应用程序生成刷新令牌。