2014-12-08 6 views
0

Я пытаюсь отправить сообщение в другую сеть в Yammer, используя REST api. К основной компании, в которую я вхожу, я успешно прочитал и отправил сообщение в определенную группу, однако я могу читать из группы в другой сети, но не публиковать. Обратите внимание, что когда я читаю сообщение из другой сети, я просто добавляю название компании в опубликованный URL например.Опубликовать сообщение в определенной сети в Yammer с помощью Javascript API Yammer API

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

Это прекрасно работает для чтения сообщений, однако при попытке отправить сообщение, используя подобную идеологию, используя имя компании в публикуемой URL не работает. Я прочитал в подобном сообщении, что вам необходимо получить токен-носитель дочерних компаний и передать его в опубликованном заголовке. Вот код, который я отправил использовать ....

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

Я ответил на свой вопрос ... Теперь я думаю о том, что я делал, было немного глупо. Все, что мне нужно было сделать, - установить токен аутентификации с помощью токена myChildCompany с помощью yammer api вместо того, чтобы вручную установить маркер в заголовке запроса. Также не используйте URL дочерней компании для yammer api, как я пытался в своей предыдущей попытке.

Вот исправленный код для всех, кому нужно отправлять сообщения в группу за пределами основной компании в Yammer, используя Javascript.

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/в противном случае вы получите ошибку «no-same-origin» в Chrome. Я обновил свой ответ. –

+0

Не могли бы вы подтвердить, что узел yam.request больше не присутствует в текущей реализации API? – joweiser

Смежные вопросы