3

我正在尝试编写一个从 Yammer 中提取数据的小型 web 应用程序。我必须通过 Yammer 的 OAuth 网桥才能访问他们的数据。我尝试使用Oauth php 库并进行 3 次握手。但在最后一步,我收到一条错误消息,指出我的 OAuth 签名无效。

以下是一系列步骤:

  1. 第一部分涉及获取请求令牌 URL,这些是我传递的查询参数。

        [oauth_version] => 1.0
        [oauth_nonce] => 4e495b6a5864f5a0a51fecbca9bf3c4b
        [oauth_timestamp] => 1256105827
        [oauth_consumer_key] => my_consumer_key
        [oauth_signature_method] => HMAC-SHA1
        [oauth_signature] => FML2eacPNH6HIGxJXnhwQUHPeOY=
    
  2. 完成此步骤后,我得到请求 Token 如下:

    [oauth_token] => 6aMcbRK5wMqHgZQsdfsd [oauth_token_secret] => ro8AJxZ67sUDoiOTk8sl4V3js0uyof1uPJVB14asdfs [oauth_callback_confirmed] => true

  3. 然后,我尝试通过将参数传递给授权 url 来授权给定的令牌和令牌机密。它将我带到 Yammer 的身份验证页面,我允许我的应用程序与 Yammer 对话。

  4. Yammer 然后给了我一个 4 位数的代码,我必须将它放回我的应用程序中,然后它会尝试获取永久访问令牌。我将以下信息传递给访问令牌 URL:

        [oauth_version] => 1.0
        [oauth_nonce] => 52b22495ecd9eba277c1ce6b97b00fdc
        [oauth_timestamp] => 1256106815
        [oauth_consumer_key] => myconsumerkey
        [callback_token] => 61A7
        [oauth_token] => 6aMcbRK5wMqHgZQsdfsd
        [oauth_token_secret] => ro8AJxZ67sUDoiOTk8sl4V3js0uyof1uPJVB14asdfs
        [oauth_callback_confirmed] => true
        [oauth_signature_method] => HMAC-SHA1
        [oauth_signature] => V9YcMDq2rP7OiZTK1k5kb/otMzA=
    
  5. 在这里,我应该收到 Oauth 永久访问令牌,但我得到了Invalid Oauth signature。我不知道我做错了什么。我使用相同的签名来签署请求。我应该使用新的令牌和秘密签署请求吗?我也尝试过,但无济于事。我什至尝试使用signpost库在java中实现这一点,但被困在了完全相同的地方。帮助 帮助!!

4

3 回答 3

0

我尝试使用 PLAINTEXT .. 但对于这种方法,即使请求令牌,它也会给我同样的“无效 OAuth 签名”错误。

那么是否可以生成我们使用 HMAC-SHA1 的访问令牌并访问实际的 API 方法,即发布消息.. 我们使用 PLAINTEXT?

于 2009-11-09T08:53:38.683 回答
0

callback_token是 Yammer 为响应今年早些时候的 OAuth 安全建议而引入的。当 OAuth 1.0a 发布时,它被命名为oauth_verifier. 但是,Yammer 仍然支持他们的解决方法但重命名并再次尝试确定的可能性不大。

此外,以下是昨天来自 Yammer 开发网络的信息:

明天我们将发布对 Yammer API 的一些更改,以方便用户在 API 客户端上进行网络切换。大多数更改都在 OAuth 访问令牌调用中,它允许您为给定用户生成预授权的 OAuth 访问令牌。将为他们所在的每个网络生成一个令牌,并且您的客户端通过发送使用该网络的适当令牌签名的 API 请求来切换网络。

我假设 Yammer OAuth 库可能需要根据此更改进行更新。我还没看过。

编辑:我的python-yammer-oauth库仍然可以工作,尽管 Yammer 已经改变了他们的事情。

Edit2:您可以尝试使用签名方法PLAINTEXT而不是HMAC-SHA1?我遇到了 Yammer 和 HMAC-SHA1 的问题。

于 2009-11-06T06:57:26.723 回答
0

刚刚发现问题!

我忘记在 CONSUMER_SECRET 的末尾添加一个 & 符号(“&”)。也许这也是你的问题?

于 2010-08-10T10:49:26.620 回答