Yammer: больше нельзя получать доступ к сообщениям из другой сети с помощью Yammer API.

Я являюсь частью двух сетей Yammer N1 и N2. N1 — моя домашняя сеть.

Через несколько дней/недель я больше не могу получать доступ к сообщениям из сети N2 с помощью Yammer API.

Вот как я получаю сообщения от N1 (что успешно):

  • get auth code by browsing to https://www.yammer.com/dialog/oauth?client_id=[clientid]&redirect_uri=[redirecturi]
    • results in [authcode_N1] (after loggin in; in URL)
  • perform GET https://www.yammer.com/oauth2/access_token.json?client_id=[clientid]w&client_secret=[secret]&code=[authcode_N1]
    • results in JSON with [access_token1] (note: there is only one token in response)
  • get messages by performing GET https://www.yammer.com/api/v1/messages.json, with HTTP header Authorization: Bearer [access_token1]
    • result: messages from N1 only

Вот как я пытаюсь получить сообщения от N2 (что не удается):

  • get auth code by browsing to https://www.yammer.com/N2/dialog/oauth?client_id=[clientid]&redirect_uri=[redirecturi].
    • note 'N2' in URL
    • приводит к [authcode_N2] (который отличается от ранее полученного для N1)
  • perform GET https://www.yammer.com/oauth2/access_token.json?client_id=[clientid]w&client_secret=[secret]&code=[authcode_N2]
    • results in status 403, body 'Your network is not allowed to request an OAuth token for this Application'

Вот еще одна попытка получить сообщения от N2 (которая тоже не удалась):

  • get tokens by performing GET on https://www.yammer.com/api/v1/oauth/tokens.json, with HTTP header 'Authorization: Bearer [access_token1]
    • results in JSON with two elements, both with a different network ID (one for N1 and one for N2) and a token for each network
    • обратите внимание, что токен для N1 в этом JSON соответствует [access_token1] выше
    • давайте вызовем токен для N2 в этом JSON [access_token2]
  • perform GET https://www.yammer.com/api/v1/messages.json, with HTTP header Authorization: Bearer [access_token2]
    • response: {"response":{"stat":"fail","code":17,"message":"Attempt to access a protected resource failed."}}

Обратите внимание, что [clientid], [secret] и [redirecturi] взяты из нашего приложения. На его странице настроек (озаглавленной «Зарегистрированные приложения») есть зеленая галочка в столбце «включено», а в столбце «глобальные» нет. В разделе «Основная информация» для этого приложения есть зеленая кнопка «Развернуть». Возможно, это вызывает проблему (я нашел некоторые ответы пользователей в этом направлении о подобных проблемах (см. access-tokens-for-external-networks">Yammer REST API: как получить токены доступа для внешних сетей?))? Но это не объясняет, почему раньше работало получение сообщений от N2...

Пожалуйста, дайте мне знать, как я могу получить данные от N2.

Заранее спасибо!


person bodi    schedule 26.03.2015    source источник


Ответы (1)


Используйте GET https://www.yammer.com/api/v1/oauth/tokens.json?access_token= с вашим токеном N1, чтобы сгенерировать токен для всех ваших сетей. Прочитайте токен N2 из ответа и вызовите API yammer с этим токеном.

Вы можете увидеть, как это работает на «знаменитом» zapier «Api Quirks» https://zapier.com/blog/api-quirks-yammer-external-networks/

person Julien Ravet    schedule 21.07.2015