2016-10-20 15 views
1

AndroidでTumblr API 2.0(OAuth 1.0a)を使用してTumblrにサインインしようとしています。 getRequestTokenリクエストを送信すると、 "301 Moved Permanently"レスポンス - >クラッシュが発生します。 OAuth1Serviceデバッグスタックトレースは次のとおりです。Tumblr - 301エラーでリクエストトークンを取得できませんでした

10-20 10:20:34.455 2154-2387/com.package.android I/System.out: obtaining request token from http://www.tumblr.com/oauth/request_token 
10-20 10:20:34.459 2154-2387/com.package.android I/System.out: setting oauth_callback to http://127.0.0.1 
10-20 10:20:34.465 2154-2387/com.package.android I/System.out: generating signature... 
10-20 10:20:34.466 2154-2387/com.package.android I/System.out: using base64 encoder: CommonsCodec 
10-20 10:20:34.475 2154-2387/com.package.android I/System.out: base string is: POST&http%3A%2F%2Fwww.tumblr.com%2Foauth%2Frequest_token&oauth_callback%3Dhttp%253A%252F%252F127.0.0.1%26oauth_consumer_key%3DkizvGnMKiwPzfKNdLoGe4UXrO4EaCXa5UsEMOVvP6KkS2xZ8QQ%26oauth_nonce%3D1243319427%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1476948034%26oauth_version%3D1.0 
10-20 10:20:34.475 2154-2387/com.package.android I/System.out: signature is: Jm8oRzCRHwuKiBg800CjW6tpioc= 
10-20 10:20:34.476 2154-2387/com.package.android I/System.out: appended additional OAuth parameters: { oauth_signature_method -> HMAC-SHA1 , oauth_consumer_key -> kizvGnMKiwPzfKNdLoGe4UXrO4EaCXa5UsEMOVvP6KkS2xZ8QQ , oauth_version -> 1.0 , oauth_timestamp -> 1476948034 , oauth_nonce -> 1243319427 , oauth_callback -> http://127.0.0.1 , oauth_signature -> Jm8oRzCRHwuKiBg800CjW6tpioc= } 
10-20 10:20:34.477 2154-2387/com.package.android I/System.out: using Http Header signature 
10-20 10:20:34.484 2154-2387/com.package.android I/System.out: sending request... 
10-20 10:20:34.488 2154-2387/com.package.android D/NetworkSecurityConfig: No Network Security Config specified, using platform default 
10-20 10:20:34.868 2154-2387/com.package.android I/System.out: response status code: 301 
10-20 10:20:34.868 2154-2387/com.package.android I/System.out: response body: <html> 
10-20 10:20:34.868 2154-2387/com.package.android I/System.out: <head><title>301 Moved Permanently</title></head> 
10-20 10:20:34.868 2154-2387/com.package.android I/System.out: <body bgcolor="white"> 
10-20 10:20:34.868 2154-2387/com.package.android I/System.out: <center><h1>301 Moved Permanently</h1></center> 
10-20 10:20:34.868 2154-2387/com.package.android I/System.out: <hr><center>nginx</center> 
10-20 10:20:34.868 2154-2387/com.package.android I/System.out: </body> 
10-20 10:20:34.868 2154-2387/com.package.android I/System.out: </html> 
10-20 10:20:34.870 2154-2387/com.package.android W/System.err: com.github.scribejava.core.exceptions.OAuthException: Response body is incorrect. Can't extract token and secret from this: '<html> 
10-20 10:20:34.870 2154-2387/com.package.android W/System.err: <head><title>301 Moved Permanently</title></head> 
10-20 10:20:34.870 2154-2387/com.package.android W/System.err: <body bgcolor="white"> 
10-20 10:20:34.870 2154-2387/com.package.android W/System.err: <center><h1>301 Moved Permanently</h1></center> 
10-20 10:20:34.870 2154-2387/com.package.android W/System.err: <hr><center>nginx</center> 
10-20 10:20:34.870 2154-2387/com.package.android W/System.err: </body> 
10-20 10:20:34.870 2154-2387/com.package.android W/System.err: </html> 

(コンシューマキーとシークレットが実数であるが、ダミーのアカウントから)

奇妙なことは、ちょうど昨日、すべてがOKだったと私はトークンsucccessfully要求を受信したことがあります。何が問題の原因になりますか?

UPDATED/SOLVED - ScribeJava TumblrApiモデルに問題がありました。デフォルトでは、「HTTP」プレフィックスでURLが含まれていますが、実際のTumblrのAPIは、「HTTPS」が必要

+1

あなたのソリューションを共有できますか?どのTumblr APIバージョンを使用していますか? – JimTim

答えて

0

誰か他の人には問題が...新しい「カスタムAPI」

public class TumblrHTTPSApi extends DefaultApi10a { 
    private static final String AUTHORIZE_URL = "https://www.tumblr.com/oauth/authorize?token=%s"; 

    protected TumblrHTTPSApi() { 
    } 

    private static class InstanceHolder { 
     private static final TumblrHTTPSApi INSTANCE = new TumblrHTTPSApi(); 
    } 

    public static TumblrHTTPSApi instance() { 
     return InstanceHolder.INSTANCE; 
    } 

    @Override 
    public String getAccessTokenEndpoint(){ 
     return "https://www.tumblr.com/oauth/access_token"; 
    } 

    @Override 
    public String getRequestTokenEndpoint() { 
     return "https://www.tumblr.com/oauth/request_token"; 
    } 

    @Override 
    public String getAuthorizationUrl(OAuth1RequestToken requestToken) { 
     return String.format(AUTHORIZE_URL, requestToken.getToken()); 
    } 
} 

この「新しいを作成している場合APIは通常どおり使用できます:

// create new oauth service 
final OAuth10aService service = new ServiceBuilder() 
    .apiKey(consumerKey) 
    .apiSecret(consumerSecret) 
    .callback(callbackUrl) 
    .build(TumblrHTTPSApi.instance()); 
+0

Gist:https://gist.github.com/JimTim/5ed18159dc960cfa868bfcc81b2411cb – JimTim

関連する問題