2014-12-08 72 views
0

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

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 
       }); 
      } 

我有这样的有和无“myChildCompany”中的URL但似乎没有任何工作尝试。我检查了响应,它返回一个错误:401未经授权。我没有问题发布给母公司。

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

回答

0

我回答了我自己的问题......现在我想起我正在做的事情有点愚蠢。我所需要做的就是使用yammer API使用myChildCompany的令牌设置授权令牌,而不是尝试手动在请求头中设置令牌。也不要使用儿童公司的网址到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 
      }); 
      } 
     }); 
    } 
+0

对不起还有一两件事,我想我可能只是添加为一个搁置... 所有URL链接应该https://api.yammer.com/api/v1/而不是www.yammer.com/api/v1 /否则最终会出现Chrome中的“不同源”错误。我已经更新了我的答案。 – 2014-12-09 02:59:22

+0

您是否确认当前API实现中不再存在节点yam.request? – joweiser 2015-06-22 13:13:59