2015-09-29 2 views
6

Я разрабатываю универсальное приложение для Windows (Windows 10), где у меня есть «двухслойное» приложение: на устройствах IoT (например, Raspberry Pi 2) он просто отображает но на всех других устройствах (ПК, ноутбуках, смартфонах и т. д.) у вас есть что-то вроде контроллера для отображаемых данных.Получение токена обновления из Windows Live SDK в Universal Windows App

Одной из особенностей, которую я хочу реализовать, является вход в 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 
} 

Так что мой proplem в том, что я не получаю поле из LiveConnectSession где RefreshToken может быть сохранена, но все прочитанные статьи говорят, что мне просто нужно добавить wl.offline_access в области для получения RefreshToken.

Я не очень хорошо знаком с OAuth2.0 и SDK/API строят на OAuth, так что кто-то знает что-то, что я делаю неправильно или как мне с этим справиться?

Я очень благодарен за все полезные и полезные ответы!

PS: Я использую Live SDK 5.6, а не новый OneDrive API, потому что он не имеет доступа к информации календаря

+0

Никто с идеей? –

+0

Если вы посмотрите на [источник liveSdk] (https://github.com/liveservices/LiveSDK-for-Windows), то вы увидите, что в большинстве исполняемых запросов метод 'RefreshTokenIfNeeded()' называется. Поэтому я думаю, что токен обновления не отображается, поскольку он обрабатывается автоматически. – Romasz

+0

Я установил Live SDK 5.6.3 из пакета nuget, и там loginResult.Session имеет свойство RefreshToken, поэтому не уверен, что вы используете там, где нет такого свойства. – Evk

ответ

2

wl.offline_access

в данном случае это говорит о авторизацию пользователя и разрешить приложению иметь разрешение пользователя на работу, когда они отсутствуют (когда пользователь отключен, а не компьютер/устройство).
Это не означает, что приложение будет входить в систему, когда система находится в автономном режиме, но попросит пользователя разрешить работу приложения, когда пользователь отсутствует.
Даже я использовал Live SDK для получения пользовательских данных в одном из моих предыдущих проектов, но для календаря пришлось использовать Office365. Теперь вы можете использовать Outlook API Хотя мы получаем Access Token, используя loginResult.Session.AccessToken, но я не думаю, что refreshToken создается для приложения WinRT.

Смежные вопросы