【发布时间】:2015-05-30 08:22:25
【问题描述】:
我是两个 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(注意:响应中只有一个令牌)
- 通过执行 GET
https://www.yammer.com/api/v1/messages.json获取消息,HTTP 标头Authorization: Bearer [access_token1]- 结果:仅来自 N1 的消息
这是我尝试从 N2 获取消息的方式(失败):
- 通过浏览
https://www.yammer.com/N2/dialog/oauth?client_id=[clientid]&redirect_uri=[redirecturi]获取授权码。- 请注意 URL 中的“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'
- 导致状态 403,正文
这是另一个从 N2 获取消息的尝试(也失败了):
- 通过在
https://www.yammer.com/api/v1/oauth/tokens.json上执行GET 获取令牌,HTTP 标头'Authorization: Bearer [access_token1]- 生成的 JSON 包含两个元素,两个元素都具有不同的网络 ID(一个用于 N1,一个用于 N2)和每个网络的令牌
- 请注意,此 JSON 中 N1 的令牌与上面的 [access_token1] 匹配
- 让我们在这个 JSON [access_token2] 中调用 N2 的令牌
- 执行 GET
https://www.yammer.com/api/v1/messages.json,HTTP 头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 获取数据。
提前致谢!
【问题讨论】:
标签: oauth-2.0 social-networking yammer