Rest Yammer API-发布到外部网络

Rest Yammer API-发布到外部网络,rest,cookies,oauth,yammer,Rest,Cookies,Oauth,Yammer,我广泛使用Yammer API访问当前用户的内部网络。使用从中提取的原始令牌,所有API调用(GET和POST)都正常工作 “{App ID}&client_secret={App secret}&code={Access code}” 以及使用标题;“授权:承载{令牌}”和“Cookie:{从HTML请求接收的Cookie}” 我已经通过使用获得了所有可访问网络的令牌; “” 超过这一点访问外部网络很麻烦。我将标题改为“Authorization:Bearer{NetworkToken}”“。

我广泛使用Yammer API访问当前用户的内部网络。使用从中提取的原始令牌,所有API调用(GET和POST)都正常工作

“{App ID}&client_secret={App secret}&code={Access code}”

以及使用标题;“授权:承载{令牌}”和“Cookie:{从HTML请求接收的Cookie}”

我已经通过使用获得了所有可访问网络的令牌; “”

超过这一点访问外部网络很麻烦。我将标题改为“Authorization:Bearer{NetworkToken}”“。虽然我可以从外部网络获取详细信息,但我无法发布到外部网络。我总是收到“401未经授权”的回复。“未经授权”的请求包括删除消息和喜欢外部网络中的消息

在能够从外部网络读取数据和启用POST方法之间还有其他步骤吗

如果我能对此有所了解,我将非常感激!
干杯

访问外部网络时,需要将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;
        }
    });

上个月,当我在做一个项目时,我用了下面的方法来发布消息

消息必须以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();
        }

我发现Yammer API有很多不一致的地方。我现在已经计算出了整个外部网络。这里有一些事情可能并不清楚

在执行POST或DELETE请求时,不要在url中包含网络链接!仅在执行GET请求时才包括网络链接。这是我的主要问题

所需的请求头

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)
哦,仅供参考,要请求“所有公司”组中的线程,这是url


谢谢你的回答

谢谢,;我已经有了授权令牌。因为我没有使用SDK,所以我不能直接使用它。我应该提到,我正在使用C#在添加到web请求的字典中构造头。我不确定除了文档中描述的URL之外,“networkPermalink”应该插入到哪里;www.yammer.com/{NetworkPermalink}/{ResourcePath}我已经尝试在标题“Authorization:{NetworkToken}”中插入单个网络令牌。NetworkPermalink仅在URL中需要。如果您拥有如上所述的外部网络的正确令牌,并使用“Authorization:Bearer{NetworkToken}”,它应该可以工作。好的,谢谢。所以我已经尝试过这个(正如我在问题中所说的)和一些可选的组合。不管怎样,我一直收到“401 Unauthorized”响应和响应头;WWW-AUTHENTICATE:Bearer realm=“WWW.yammer.com”以及一些不相关的头文件。我们能找到解决办法吗?很明显,它没有发挥应有的作用。也许这是一个错误?