我已经能够使用Scribe API从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");
此操作失败并告诉我签名无效。
答案 0 :(得分:3)
问题是,
orequest.addBodyParameter("method", "vimeo.videos.upload.getQuota");
然后Scribe将此参数添加到用于形成签名的基本字符串中。 Vimeo看到我正在做GET
并且method
参数在请求正文中而不是查询字符串,所以它没有将它包含在基本字符串中。因此,预期的签名Vimeo与Scribe生成的签名不同。
我正在做一个GET
但是我应该在查询字符串上传递这个参数,
orequest.addQuerystringParameter("method", "vimeo.videos.upload.getQuota");
这样就可以了:
OAuthRequest orequest = new OAuthRequest(Verb.POST, "http://vimeo.com/api/rest/v2");
orequest.addBodyParameter("method", "vimeo.videos.upload.getQuota");