Почему Live connect всегда запрашивает согласие?

Я хочу авторизовать своих пользователей с помощью Windows Live. Я использую Windows Live Connect 5.0 SDK для этого. Я использую элемент управления WPF WebBroser для получения токена, но он всегда запрашивает согласие.

Я позволил веб-браузеру перейти по следующей ссылке:

https://oauth.live.com/authorize?client_id=CLIENT_ID&response_type=token&scope=wl.signin%20wl.basic&redirect_uri=https://oauth.live.com/desktop

с идентификатором клиента в качестве идентификатора моего приложения. И я наблюдаю за переходом на URL перенаправления. Мне в основном не нужно входить в систему. Но каждый раз мне нужно дать согласие на две сферы.

Странно то, что, когда я смотрю на приложение, я дал согласие, обе области проверяются.

Также, когда я использую другой URL для тихого входа в систему:

https://oauth.live.com/authorize?client_id=CLIENT_ID&response_type=token&scope=wl.signin%20wl.basic&redirect_uri=https://oauth.live.com/desktop&display=none

Я получаю сообщение об ошибке, что пользователь не дал согласие на wl.signin и wl.basic.

1 ответ

Решение

В отличие от реализации OAuth в Facebook, проверка флажка не запоминает согласие на сервере WL, а скорее дает вам токен обновления, который можно обменять на токен доступа.

Поток:

  • если токен обновления сохранен - ​​попробуйте получить токен доступа на основе обновления ( http://msdn.microsoft.com/en-us/library/ff752395.aspx), в противном случае:
  • показать диалог согласия
  • получить доступ и обновить токены ( http://msdn.microsoft.com/en-us/library/ff750952.aspx)
  • Безопасное сохранение токена обновления на вашем сервере - токен обновления почти эквивалентен зашифрованному имени пользователя и паролю. Если вы не можете хранить безопасно, вы должны жить с согласием.
Другие вопросы по тегам