5

我已经能够使用 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");

这失败并告诉我签名无效。

4

1 回答 1

3

问题是,

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

Scribe 然后将此参数添加到用于形成签名的基本字符串中。Vimeo 看到我在做 aGET并且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");
于 2011-12-21T22:13:53.767 回答