Использование Google oAuth на WP7 - PullRequest
6 голосов
/ 01 августа 2011

Я опробовал небольшое приложение для Windows Phone 7, которое использует службы задач Google, проблема в том, что я не могу получить разрешение на вход в систему.

Я прочитал все шаги, приведенные в документации, иследуя им
http://code.google.com/apis/accounts/docs/OAuth2.html#IA в соответствии с документом, который мне нужен, чтобы использовать веб-элемент управления для входа в систему.

Можно ли как-то просто ожидать пароль от имени пользователя и получать маркер аутентификации в фоновом режиме?

Ответы [ 4 ]

15 голосов
/ 02 августа 2011

Вы можете использовать ClientLogin для работы в фоновом режиме, но он заменяется (медленно) и не работает со всеми учетными записями Google (двухэтапный), поэтому я бы посоветовал вам придерживаться oAuth2, он определенно работает. 1001 *

Как мне это сделать - открыть WebBrowser элемент управления, убедившись, что IsScriptEnabled="true", а затем направить его на

https://accounts.google.com/o/oauth2/auth?client_id=xxx&redirect_uri=https://www.mydomain.com/oauth2callback&scope=xxx&response_type=code

Действительно важной частью является URL перенаправления. Затем вы подключаете метод Navigating для вашего WebBrowser элемента управления, чтобы перехватить перенаправление на этот URL.

<phone:WebBrowser Name="webbrowser" Navigating="webbrowser_Navigating" IsScriptEnabled="true" />  

private void webbrowser_Navigating(object sender, NavigatingEventArgs e) {
  if (e.Uri.Host.Equals("www.mydomain.com")) {
    e.Cancel = true;
    HandleOAuthResponse(e.Uri.Query);
  }
}

Это вернет вам строку перенаправления Google, в которой есть code=xxx, с которой вы затем следуете остальным документам и обменяете его на токен, который будет длиться 30 минут, и токен обновления, чтобы поддерживать активную аутентификацию. *

2 голосов
/ 01 августа 2011

Посмотрите на этот пост , речь идет о клиенте Twitter, но он также использует OAuth.

EDIT

Я читал больше об этом, и это кажется проблемой, потому что использование веб-страницы является обязательным, и пользователь должен скопировать код доступа в приложение. Кажется, трудно / невозможно очистить веб-браузер Я не смог найти никаких ссылок на реальное решение в данный момент.

0 голосов
/ 13 сентября 2012

На самом деле вы можете очистить URI браузера, взяв e.Uri.ToString() и используя метод замены, чтобы удалить ненужные элементы, например. thestring.Replace("http://fakeuri.com/code=","");

Единственная проблема, с которой я столкнулся, связана с токеном доступа.

0 голосов
/ 01 сентября 2011

Я думаю, вы можете удалить webBrowser, используя метод webBrowser.SaveToString ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...