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