2013-11-08 2 views
2

Так что я пытаюсь получить информацию о различных изображениях, для которых я буду использовать API Imgur через Java.Как использовать OAuth с Imgur?

Я нашел библиотеку: https://github.com/fernandezpablo85/scribe-java,

но при попытке к ImgUrTest.java @https://github.com/fernandezpablo85/scribe-java/blob/master/src/test/java/org/scribe/examples/ImgUrExample.java, я получаю следующую трассировку стека:

Exception in thread "main" org.scribe.exceptions.OAuthException: Response body is incorrect. Can't extract token and secret from this: 'OAuth Verification Failed: The consumer_key "<Client-ID>" token "" combination does not exist or is not enabled.' 
    at org.scribe.extractors.TokenExtractorImpl.extract(TokenExtractorImpl.java:41) 
    at org.scribe.extractors.TokenExtractorImpl.extract(TokenExtractorImpl.java:27) 
    at org.scribe.oauth.OAuth10aServiceImpl.getRequestToken(OAuth10aServiceImpl.java:64) 
    at org.scribe.oauth.OAuth10aServiceImpl.getRequestToken(OAuth10aServiceImpl.java:40) 
    at org.scribe.oauth.OAuth10aServiceImpl.getRequestToken(OAuth10aServiceImpl.java:45) 
    at ImgUrExample.main(ImgUrExample.java:31) 

< где Клиент-ID> мой идентификатор клиента, как показано на странице ImgUr.

Я проверял, что мой идентификатор клиента и секрет клиента верны, я попытался сделать несколько приложений на сайте ImgUr, ни одна из которых не работает.

Edit: Этот код работает:

URL imgURL = new URL(YOUR_REQUEST_URL); 
HttpURLConnection conn = (HttpURLConnection) imgURL.openConnection(); 
conn.setRequestMethod("GET"); 
if (accessToken != null) { 
    conn.setRequestProperty("Authorization", "Bearer " + accessToken); 
} else { 
    conn.setRequestProperty("Authorization", "Client-ID " + CLIENT_ID); 
} 
BufferedReader bin = null; 
bin = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
+0

Во-первых, пример использует Imgur API v2, который является старым и неподдерживаемым. Вы должны использовать API v3. Также обратите внимание, что «для общедоступных общедоступных и анонимных ресурсов, таких как получение информации об изображении, поиск комментариев пользователей и т. Д., Все, что вам нужно сделать, - это отправить заголовок авторизации с вашим client_id в ваши запросы». из документов на https://api.imgur.com/oauth2/ - так что вам действительно не нужно OAuth за то, что вы делаете. – TalkLittle

+0

Возможно, вам стоит опубликовать это как ответ, поскольку он отвечает на мой вопрос? Не могли бы вы дать мне ссылку или некоторые классы, из которых я могу работать? Я действительно новичок в этом материале HTTP-запроса. – vrwim

ответ

0

Во-первых, пример с использованием Imgur API v2, который является старым и не поддерживается. Вы должны использовать API v3.

отметить также, что:

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

from docs at https://api.imgur.com/oauth2 - так что вам действительно не нужно OAuth за то, что вы делаете.

Приведенный ниже пример кода API Imgur, который может вам помочь, приведен в списке https://api.imgur.com/ - пример Android может быть более уместным для вас, поскольку он использует Java, но неудивительно, что он поставляется со всеми накладными расходами на проект Android, по сравнению с простым Java-приложением.

+0

Спасибо! Это сработало. Для всех заинтересованных, я добавил код, который работает на мой OP. – vrwim

+0

Можете ли вы привести мне пример того, что вы поставили как YOUR_REQUEST_URL? – Rohan

+0

А также, что заложено в accessToken? – Rohan