Я пытаюсь создать поставщика OAuth 2.0 и приложение для Android, которое может подключаться к поставщику с помощью OAuth 2.0. У меня есть следующие настройки:
Сервер Tomcat с примером J2EE-провайдера OAuth 2.0 с именем 'sparklr' из springsource. Когда я проверяю его на примере «Тонр», он работает отлично.
Теперь я хочу приложение для Android, которое работает примерно так же, как приложение Tonr. Доступ к ресурсам фотографий из приложения sparklr с помощью OAuth 2.0
Но я застрял. Я использую библиотеки leeloo, которые были перенесены в Apache Amber. Чтобы быть точным, я использую следующий учебник: http://simpleprogrammer.com/2011/05/25/oauth-and-rest-in-android-part-1/
Первая часть приложения работает. Браузер запускается, и я получаю страницу sparklr для входа и авторизации запроса.
Но когда я пытаюсь получить токен доступа, приложение вылетает. Я не получил никакой мудрости от logcat, поэтому я использовал отладку, чтобы получить запрос. Следующий код строит запрос:
request = OAuthClientRequest.tokenLocation("http://10.106.0.16:8084/sparklr/oauth/token")
.setGrantType(GrantType.AUTHORIZATION_CODE)
.setClientId("tonr")
.setClientSecret("secret")
.setRedirectURI("MyOAuth2POC://oauthresponse")
.setCode(code)
.setScope("trust")
.buildBodyMessage();
И я получаю свой URL: http://10.106.0.16:8084/sparklr/oauth/token?scope=read&code=iCMZPE&client_secret=secret&client_id=tonr&grant_type=authorization_code&redirect_uri=MyOAuth2POC%3A%2F%2Foauthresponse
Все параметры есть, и это выглядит правильно для меня. Но я получаю следующий вывод:
{"error": "invalid_grant", "error_description": "Invalid
код авторизации: MASCID "}
Так что, очевидно, что-то не так с параметром scope. Я попытался установить для него «доверие» вместо «чтение», но никакого другого результата. Нужно ли что-то менять в приложении sparklr? Или я что-то не так делаю с приложением Android, и что?
Надеюсь, кто-то может помочь.
ТНХ!