我正在开发一个从 Yammer 读取数据的 ASP.NET Web 应用程序。我已成功完成身份验证并从“家庭”网络获取消息。
现在我想切换到另一个网络并从中获取消息。我已经阅读了所有文档,特别是Networks部分,其中说明了以下内容:
便于在不同的 Yammer 网络之间切换用户。所有 Yammer Web 请求都在 URL ( https://www.yammer.com/network_permalink/resource_path ) 中包含一个网络永久链接,以表示网络上下文。API 请求对每个用户/网络组合使用不同的 OAuth 令牌。
端点:返回当前用户有权访问的网络列表。支持included_suspended 参数。
GET https://www.yammer.com/api/v1/networks/current.json
好的,所以我需要为用户/网络组合获取相应的令牌。完美的。我GET
向那个networks/current.json
端点发出请求,我得到了当前用户可以访问的所有网络。伟大的。现在,令牌在哪里?它们不在 json 响应中。
所以...
- 如何使用 Yammer REST API 通过服务器端代码从外部网络获取消息?
- 如何获取外部网络的令牌?
更新
按照布赖恩的建议:
- 我在身份验证标头( )
GET https://www.yammer.com/api/v1/oauth/tokens.json
中传递了当前令牌Bearer: xxxxxxxxx
- 这将返回我正在使用的用户所在的 2 个网络。家庭和外部。我注意到的一件事是
user_id
每个网络都不同。我不知道那是另一个用户,还是同一个用户user_id
对每个网络都有不同的。 - 现在我想从另一个网络获取消息,所以我做了一个
GET https://www.yammer.com/api/v1/messages.json
但现在使用我从tokens.json
端点获得的外部网络的令牌。但我得到以下回复:
{
"response":
{
"stat":"fail",
"code":17,
"message":"Attempt to access a protected resource failed."
}
}
同样,根据文档,端点用于模拟,仅限于付费 Yammer 网络中经过验证的管理员用户。
我真的不知道。
更新 2
上述更新中描述的过程适用于创建 Yammer 应用程序的用户(我)。我在用着。除非我在该网络中,否则其他用户无法从外部网络获取消息。所以看起来他们正在使用我的令牌,但除非 API 中存在错误,否则这是不可能的。