Библиотеки OAuth 1.0 для Android (Java)

Я пытаюсь получить доступ к данным пользователя с сайта, который поддерживает OAuth 1.0 без обратных вызовов. Я использую библиотеку указателей и не могу получить токен доступа, потому что сайт, к которому я пытаюсь подключиться, не требует от пользователя указывать код подтверждения. Чтобы получить токен доступа от Signpost, кажется, мне нужно предоставить некоторый тип кода подтверждения.

МОЙ ВОПРОС: Есть ли способ обойти этот шаг и получить токен доступа?

В противном случае я получаю сообщение "Авторизация не удалась (сервер ответил 401)". Я настроил / зарегистрировал моего клиента.

Я включил свой существующий код и более подробную информацию о сайте, к которому я пытаюсь подключиться (http://www.stepgreen.org - вам нужно создать учетную запись, чтобы увидеть информацию ниже):

Аутентификация: OAuth

StepGreens предпочтительным методом аутентификации является OAuth. Для получения дополнительной информации об OAuth вы должны посетить OAuth.net. В настоящее время мы поддерживаем OAuth 1.0 без обратных вызовов.

Вам понадобится дополнительная информация для настройки библиотеки OAuth:

запросить токен запроса: /oauth/request_token запросить токен доступа: /oauth/access_token URL авторизации: /oauth/authorize Чтобы использовать OAuth со своими клиентами, не забудьте настроить своих клиентов.

public static void main(String[] args) throws Exception{

OAuthConsumer consumer = new DefaultOAuthConsumer( CONSUMER_KEY, CONSUMER_SECRET,    
                                                   SignatureMethod.HMAC_SHA1);

OAuthProvider provider = new DefaultOAuthProvider(consumer, REQUEST_TOKEN_URL, 
                                                  ACCESS_TOKEN_URL, AUTHORIZE_URL);

System.out.println("Fetching request token...");

String authUrl = provider.retrieveRequestToken(OAuth.OUT_OF_BAND);

System.out.println("Request token: " + consumer.getToken());
System.out.println("Token secret: " + consumer.getTokenSecret());

System.out.println("Now visit:\n" + authUrl + "\n... and grant this app authorization");
System.out.println("Enter the verification code and hit ENTER when you're done:");

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String verificationCode = br.readLine();
System.out.println("Fetching access token...");

String verificationCode = consumer.getToken();
provider.retrieveAccessToken(verificationCode.trim());

System.out.println("Access token: " + consumer.getToken());
System.out.println("Token secret: " + consumer.getTokenSecret());

URL url = new URL("http://www.stepgreen.org/api/v1/users/username/ted5000s.xml");          
HttpURLConnection request = (HttpURLConnection) url.openConnection();
consumer.sign(request);

InputStream stream = (InputStream)request.getContent();
System.out.println("Result = " + convertStreamToString(stream));
System.out.println("Sending request...");
request.connect();

System.out.println("Response code: " + request.getResponseCode() + " " + 
request.getResponseMessage());

}

Отклик:

Получение токена запроса...

Запрос токена: скрыт по соображениям конфиденциальности

Секрет токена: скрыт по соображениям конфиденциальности

Теперь посетите: http://www.stepgreen.org/oauth/authorize?oauth_token=hidden... и предоставьте авторизацию этого приложения. Введите код подтверждения и нажмите ENTER, когда вы закончите:

Извлечение токена доступа... Исключение в потоке "main" oauth.signpost.exception.OAuthNotAuthorizedException: авторизация не удалась (сервер ответил 401). Это может произойти, если ключ потребителя был неверен или подписи не совпадали. в oauth.signpost.basic.DefaultOAuthProvider.retrieveToken(DefaultOAuthProvider.java:126) в oauth.signpost.basic.DefaultOAuthProvider.retrieveAccessToken(DefaultOAuthProvider.java:96) в Test.main(Test.java:89)

0 ответов

Другие вопросы по тегам