2011-12-15 25 views
5

Scribe APIを使用してVimeoからアクセストークンを取得できました。OAuthとVimeoとの統合

ただし、保護されたリソースにアクセスしようとすると、無効な署名エラーが発生します。私はアクセスに保護されたリソースを試すために使用私のOAuthServiceは、次のようになります。そして、

OAuthService service = new ServiceBuilder() 
    .provider(VimeoApi.class) 
    .apiKey(APIKEY) 
    .apiSecret(API_SECRET) 
    .signatureType(SignatureType.QueryString) 
    .build(); 

、私は要求がやって作る次

OAuthRequest orequest = new OAuthRequest(Verb.GET, "http://vimeo.com/api/rest/v2"); 
    orequest.addBodyParameter("method", "vimeo.videos.upload.getQuota"); 

これは失敗し、署名が無効であることを教えてください。

+1

メソッドのparamは署名の一部となりますすべてのOAuthパラメータがソートされ、エンコードされ、ベースストリングに追加されるためです。署名の一部ではないことをどのように知っていますか? –

+0

@Pabloあなたは正しいです!私はBaseStringExtractImplを使用し、パラメータを参照してください。ありがとう。私は署名が無効であることを私に伝えている理由は分かりませんが、あなたは考えを持っていますか? – stevebot

+0

@Pabloこれはうまくいかないと私には分かりません。私はすべての有効なパラメータをScribeに渡しているようです。 – stevebot

答えて

3

問題は、

orequest.addBodyParameter("method", "vimeo.videos.upload.getQuota"); 

スクライブは、署名を形成するために使用される塩基の文字列には、このパラメータを追加しました。 Vimeoは私がGETをやっているのを見て、methodパラメータがリクエスト文字列であってクエリ文字列ではないので、それをベース文字列に含めませんでした。したがって、期待される署名Vimeoは、Scribeが生成したものとは異なる。

と同じように、私は、この作品

orequest.addQuerystringParameter("method", "vimeo.videos.upload.getQuota"); 

、クエリ文字列でこのパラメータを渡すべきであるので、私はしかしGETをしています:

OAuthRequest orequest = new OAuthRequest(Verb.POST, "http://vimeo.com/api/rest/v2"); 
    orequest.addBodyParameter("method", "vimeo.videos.upload.getQuota"); 
+0

あなたは答えを見つけました。 +1 –