使用Yammer Javascript API将消息发布到Yammer中的特定网络

时间:2014-12-08 08:35:43

标签: yammer

我正在尝试使用REST api将消息发布到Yammer中的另一个网络。对于我登录的主要公司,我已成功阅读并向特定群组发送消息,但我可以从另一个网络中的群组中读取但不发布。 请注意,当我从其他网络阅读帖子时,我只需将公司名称添加到发布的URL 例如

function GetMessages()
{
    yam.request.setAuthenticator('oauth2');
    yam.request.getAuthenticator({ auth: 'oauth2' }).setAuthToken('xxxxxxxxxxxxxxx');
    var access_token = "";     

   yam.request(
   {
        url: "https://api.yammer.com/childCompanyName/api/v1/messages/in_group/4787320.json",                        method: "GET",
    success: function (results)
    {             

       alert("The request was successful.");

       return results;
     }
}

这可以很好地阅读邮件,但是如果我尝试使用在发布的网址中使用公司名称的类似意识来发布邮件,它就不起作用。我在一篇类似的帖子中读到,你需要获得子公司的持有人令牌,并在发布的标题中传递它。这是我使用的发布代码....

function PostMessage()
{
      yam.request.setAuthenticator('oauth2');
      yam.request.getAuthenticator({ auth: 'oauth2' }).setAuthToken('xxxxxxxxxxxxxx');
      var access_token = "";     
      yam.request(
                {

        url: "https://www.yammer.com/api/v1/oauth/tokens.json",

        method: "GET",

        success: function(msg) 
                    {

            var access_token = "";

            for (var i=0; i < msg.length; i++) 
                            {

                //GRAB THE TOKEN FOR THE DESIRED NETWORK

                if (msg[i].network_permalink == "myChildCompany")

                {

                    access_token = msg[i].token;  //this works

                    break;

                }

            }
                     yam.request({ 
                           url: "https://www.yammer.com/myChildCompany/api/v1/messages.json",
                           method: "POST",
                            beforeSend: function (req)
                               {   
                                    req.setRequestHeader("Authorization", "Bearer " + access_token);
                              },
           data: { "body" : "123", "group_id":"4762174"} // Pass ur Group ID here
               });
             }

无论是否使用&#34; myChildCompany&#34;我都试过这个。但是在URL中似乎没有任何效果。我检查响应并返回错误:401 Unauthorized。我没有问题发布到母公司。

任何人都有这方面的经验,可以指出我正确的方向吗? 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

我回答了自己的问题......现在我想起来我做的事情有点傻。我需要做的就是使用yammer api使用myChildCompany的令牌设置auth令牌,而不是尝试手动设置请求头中的令牌。当我在之前的尝试中尝试过时,也不要使用儿童公司的网址给yammer api。

以下是需要使用Javascript将消息发布到Yammer主公司以外的群组的其他人的更正代码。

function PostMessage()
 {
      yam.request.setAuthenticator('oauth2');
      yam.request.getAuthenticator({ auth: 'oauth2' }).setAuthToken('xxxxxxxxxxxxxx');
      var access_token = "";     
      yam.request(
      {
         url: "https://api.yammer.com/api/v1/oauth/tokens.json",
         method: "GET",
         success: function(msg) 
         {
            var access_token = "";
            for (var i=0; i < msg.length; i++) 
            {
                //GRAB THE TOKEN FOR THE DESIRED NETWORK
                if (msg[i].network_permalink == "myChildCompany")
               {
                  access_token = msg[i].token;  //this works
                  break;
               }
             }
              yam.request.getAuthenticator({ auth: 'oauth2' }).setAuthToken(access_token);
             yam.request(
             { 
                 url: "https://api.yammer.com/api/v1/messages.json",
                 method: "POST",
                 data: { "body" : "123", "group_id":"4762174"} // Pass "myChildCompany's Group ID here
             });
          }
       });
  }