OAuth使用Scribe与Vimeo集成

ste*_*bot 5 java oauth vimeo scribe

我已经能够使用Scribe API从Vimeo成功获取访问令牌.

但是,当我尝试访问受保护的资源时,我收到无效的签名错误.我OAuthService用来尝试访问受保护资源,我看起来像:

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

然后,我发出请求,执行以下操作:

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

这失败了,告诉我签名无效.

ste*_*bot 3

问题是,

  orequest.addBodyParameter("method", "vimeo.videos.upload.getQuota");
Run Code Online (Sandbox Code Playgroud)

然后,Scribe 将此参数添加到用于形成签名的基本字符串中。Vimeo 看到我正在执行 aGET并且method参数位于请求正文中而不是查询字符串中,因此它没有将其包含在基本字符串中。因此,Vimeo 预期的签名与 Scribe 生成的签名不同。

但是我正在做一个,GET所以我应该在查询字符串上传递这个参数,

  orequest.addQuerystringParameter("method", "vimeo.videos.upload.getQuota");
Run Code Online (Sandbox Code Playgroud)

这有效,就像:

  OAuthRequest orequest = new OAuthRequest(Verb.POST, "http://vimeo.com/api/rest/v2");
  orequest.addBodyParameter("method", "vimeo.videos.upload.getQuota");
Run Code Online (Sandbox Code Playgroud)