【问题标题】:OAuth integration with Vimeo using Scribe使用 Scribe 与 Vimeo 集成 OAuth
【发布时间】:2012-01-21 14:09:14
【问题描述】:

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

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

【问题讨论】:

  • 方法参数将成为签名的一部分,因为所有 OAuth 参数都经过排序、编码并添加到基本字符串中。你怎么知道那不是签名的一部分?
  • @Pablo 你是对的!我使用了 BaseStringExtractImpl 并查看了参数。谢啦。我不知道为什么它告诉我签名无效,你有什么想法吗?
  • @Pablo 这不起作用对我来说没有意义。我似乎将所有有效参数传递给 Scribe。
  • 如果可以,请使用 scribe 1.3.0,它有一个全新的 debug 方法,您可以使用它进行进一步挖掘。
  • @Pablo 谢谢,我设置了调试,一切看起来都正确。您是否可以使用 scribe 访问 vimeo api 中的受限 uri?

标签: java oauth vimeo scribe


【解决方案1】:

问题是,

  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");

【讨论】:

  • 糟糕。太好了,你找到了答案! +1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-18
  • 1970-01-01
  • 2012-02-18
  • 1970-01-01
  • 2013-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多