приложение для Android, подключающееся к J2EE-приложению «sparklr» с помощью OAuth2 - PullRequest
1 голос
/ 22 ноября 2011

Я пытаюсь создать поставщика 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, и что?

Надеюсь, кто-то может помочь.

ТНХ!

1 Ответ

0 голосов
/ 28 ноября 2011

проблема была не в моем URL для получения токена доступа, а в URL моего токена запроса.

Я не указал там область действия.

Я добавил параметры в свой URL для авторизации следующим образом: http: //.../sparklr/oauth/authorize? Scope = read & response_type = code

и теперь это работает.

Я искал не в том месте ..

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