2

そのため、Java を介して Imgur API を使用して、さまざまな画像の情報を取得しようとしています。

ライブラリを見つけました: 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)

<Client-ID> は、ImgUr のページにあるクライアント ID です。

クライアント ID とクライアント シークレットが正しいことを確認しました。ImgUr サイトで複数のアプリを作成しようとしましたが、どれも機能しません。

編集:このコードは機能します:

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()));
4

1 に答える 1

0

まず、この例では、古くてサポートされていない Imgur API v2 を使用しています。API v3 を使用する必要があります。

また、次の点にも注意してください。

画像情報の取得、ユーザー コメントの検索など、読み取り専用で匿名のパブリック リソースの場合は、リクエストで client_id を含む認証ヘッダーを送信するだけです。

https://api.imgur.com/oauth2のドキュメントから-- そのため、実際に行っていることに OAuth は必要ありません。

https://api.imgur.com/にリストされている、役立つ可能性のある Imgur API コードの例がいくつかあります。Java を使用しているため、Android の例の方が適切かもしれませんが、当然のことながら、すべてのオーバーヘッドが伴います。プレーンな Java アプリケーションと比較して、Android プロジェクト。

于 2013-11-08T22:37:16.430 に答える