Yammer:无法再使用Yammer API访问来自其他网络的消息

时间:2015-03-26 10:41:57

标签: oauth-2.0 social-networking yammer

我是两个Yammer网络N1和N2的一部分。 N1是我的家庭网络。

由于几天/几周,我无法再使用Yammer API从N2网络访问消息。

以下是我从N1获取消息的方式(成功):

  • 浏览https://www.yammer.com/dialog/oauth?client_id=[clientid]&redirect_uri=[redirecturi]获取验证码
    • 导致[authcode_N1](在登录后;在URL中)
  • 执行GET https://www.yammer.com/oauth2/access_token.json?client_id=[clientid]w&client_secret=[secret]&code=[authcode_N1]
    • 使用[access_token1]生成JSON(注意:响应中只有一个令牌)
  • 通过使用HTTP标头https://www.yammer.com/api/v1/messages.json执行GET Authorization: Bearer [access_token1]来获取消息
    • 结果:仅来自N1的消息

以下是我尝试从N2(失败)获取消息的方法:

  • 通过浏览https://www.yammer.com/N2/dialog/oauth?client_id=[clientid]&redirect_uri=[redirecturi]获取验证码。
    • 注意网址中的“N2”
    • 导致[authcode_N2](与先前为N1获得的不同)
  • 执行GET https://www.yammer.com/oauth2/access_token.json?client_id=[clientid]w&client_secret=[secret]&code=[authcode_N2]
    • 导致状态403,正文'Your network is not allowed to request an OAuth token for this Application'

这是从N2获取消息的另一种尝试(也失败了):

  • 通过在https://www.yammer.com/api/v1/oauth/tokens.json上执行GET获取令牌,使用HTTP标头'授权:承载[access_token1]
    • 导致JSON包含两个元素,两个元素都具有不同的网络ID(一个用于N1,一个用于N2)和一个用于每个网络的标记
    • 请注意,此JSON中N1的令牌与上面的[access_token1]匹配
    • 让我们在这个JSON [access_token2]
    • 中调用N2的标记
  • 使用HTTP标头https://www.yammer.com/api/v1/messages.json执行GET Authorization: Bearer [access_token2]
    • 回复:{"response":{"stat":"fail","code":17,"message":"Attempt to access a protected resource failed."}}

请注意,[clientid],[secret]和[redirecturi]来自我们的应用程序。在其设置页面(标题为“已注册的应用程序”)上,“已启用”列中有一个绿色复选标记,“全局”列中没有。在此应用程序的“基本信息”部分中,有一个绿色的“部署”按钮。 也许这导致了这个问题(我已经找到了一些关于类似问题的用户响应(参见Yammer REST API: How to get access tokens for external networks?))?但这并不能解释为什么从N2中获取消息以前的工作......

请告诉我如何从N2获取数据。

提前致谢!

1 个答案:

答案 0 :(得分:0)

使用GET https://www.yammer.com/api/v1/oauth/tokens.json?access_token=和您的N1令牌为您的所有网络生成令牌。 从响应中读取N2令牌,并使用此令牌调用yammer API。

你可以看到它在#34;着名的" zapier" Api Quirks" https://zapier.com/blog/api-quirks-yammer-external-networks/