我广泛使用Yammer API来访问当前用户的内部网络。所有API调用都已正常工作(GET和POST),原始令牌是从;
中提取的“https://www.yammer.com/oauth2/access_token.json?client_id= {App ID}& client_secret = {App Secret}& code = {Access Code}”
并使用标题; “授权:持票人{令牌}”和“Cookie:{从HTML请求收到的Cookie}}。
我已经使用了所有可访问网络的令牌; “https://www.yammer.com/api/v1/oauth/tokens.json”。
超出这一点访问外部网络已证明很麻烦。我将标题更改为“授权:承载{NetworkToken}”。虽然我能够从外部网络获取详细信息,但我无法POST到外部网络。我总是收到'401 Unauthorized'回复。 “未授权”请求包括删除外部网络中的消息和喜欢消息。
在能够从外部网络读取数据和启用POST方法之间还有另一步吗?
如果我能对此有所了解,我将非常感激! 干杯!
答案 0 :(得分:0)
访问外部网络时,您需要将authToken设置为该外部网络的authToken。
第1步 - 获取所有身份验证令牌:
yam.platform.request({
url: "oauth/tokens.json",
type: 'GET',
success: function (msg) {
accessTokens = msg;
/....
},
error: function (msg) {
console.log(msg);
error(msg);
}
步骤2:将authToken设置为正确的外部网络
var currentToken = "";
$.each(accessTokens, function (i,val) {
if (val.network_permalink == $.cookie('networkPermalink')) {
currentToken = val;
}
});
答案 1 :(得分:0)
上个月我在做一个项目时,我使用以下方式发布消息。
消息必须是以UTF-8格式加密的字节。 将内容类型指定为“application / x-www-form-urlencoded”。
因此,示例代码将是:
HttpWebRequest a = (HttpWebRequest)WebRequest.Create(postUrl);
a.Headers.Add("Authorization", "Bearer" + authToken);
a.Method = "POST";
byte[] message = Encoding.UTF8.GetBytes("body=" + message + "&replied_to_id=" + threadID);
a.ContentType = "application/x-www-form-urlencoded";
a.ContentLength = message.Length;
using (var postStream = request.GetRequestStream())
{
postStream.Write(message, 0, message.Length);
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (var postStreamForResponse = response.GetResponseStream())
{
StreamReader postReader = new StreamReader(postStreamForResponse);
string results = postReader.ReadToEnd();
postReader.Close();
}
答案 2 :(得分:0)
我用Yammer API发现了很多不一致怪癖。我现在已经找到了外部网络。以下是一些可能不太清楚的事情;
在执行POST或DELETE请求时,请不要在网址中包含network_permalink!您在执行GET请求时只包含network_permalink。这是我的主要问题。
必需的请求标头;
Content-Type : application/x-www-form-urlencoded
Accept : application/json
Cookie : _workfeed_session_id=(A code that can be extracted from the response from your first request with an auth token)
Authorization : Bearer (Access token for whichever network you wish to access)
哦,只是仅供参考,要求'All Company'组中的线程,这是网址; https://www.yammer.com/(network_permalink)/api/v1/messages/general.json
感谢您的回答!