Yammer REST API: 401 неупълномощен при използване на токен на Azure AD и делегирани разрешения на Yammer

Създавам приложение на Azure AD, което използва новия предварителен преглед на делегираните разрешения на Yammer, за да публикувам съобщение в Yammer, използвайки маркера за достъп, който получих от Azure AD. За съжаление, получавам отговор 401 Unauthorized, когато се опитвам да извикам API на Yammer Rest.

Ето примерния код:

var resourceId = "https://www.yammer.com";
var endpointUrl = "https://www.yammer.com/api/v1/messages/following.json";
AuthenticationHelper helper = new AuthenticationHelper();
helper.EnsureAuthenticationContext(AuthenticationHelper.AuthorityMultitenant, resourceId);
var token = helper.AuthenticationResult.AccessToken;
HttpClient hc = new HttpClient();
hc.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
var result = await hc.GetAsync(new Uri(new Uri("https://www.yammer.com"), endpointUrl));

Тук получавам 401 Unauthorized със съобщение „Неуспешно удостоверяване“. Опитах също с api.yammer.com вместо www.yammer.com, без промяна. Знам, че токените се извличат правилно, тъй като ги тествах с други API на Office 365 REST.

Моето предположение е, че токенът е в неприет формат, но се предполага, че приема Azure Tokens сега, след като са добавени делегираните разрешения. Използвам ли грешен идентификатор на ресурс и крайна точка?


person Ivan Inyushin    schedule 06.06.2015    source източник
comment
Намерили ли сте някога решението на този проблем?   -  person Stefan    schedule 27.11.2015
comment
Виждам същия проблем. Би било страхотно, ако някой от Yammer може да ни уведоми как трябва да работи това...   -  person glenatron    schedule 11.01.2016
comment
Някакви новини по въпроса? В момента имам същите проблеми...   -  person Jonas Eriksson    schedule 24.05.2016
comment
Към момента на писане това не е поддържано решение. Разрешението е ограничен преглед в AAD. Следователно няма да поддържа всички сценарии. Препоръчвам на хората да регистрират приложение в Yammer и да следват текущата документация на сайта за разработчици на Yammer.   -  person Brian Lyttle    schedule 20.02.2019


Отговори (3)


Вашият примерен код изглежда правилен. Вашият потребител има ли активен абонамент за Yammer?

person Mario Caropreso    schedule 28.06.2015
comment
Да разбира се. Изглежда всичко е конфигурирано правилно, поне с браузъра потребителят може да има достъп до yammer и да извършва действия там. - person Ivan Inyushin; 29.06.2015

От отговор в групата Yammer IT Pro Networks за разработчици на Office 365, това:

Упълномощаването на Yammer в приложенията все още се обработва напълно отделно от останалата част на Office 365. Трябва да създадете приложение на Yammer във вашата мрежа и потребителите все още трябва да щракнат върху диалоговия прозорец за съгласие, за да го упълномощят.

Да, има делегирано разрешение за Yammer API в Azure AD, но освен ако не греша, това всъщност не прави нищо.

Това не е от източник на Yammer, защото те никога не предлагат никакъв вид поддръжка за разработчици или актуална документация, но изглежда напълно вероятно това да е друга „функция“, която просто не работи изобщо.

person glenatron    schedule 11.01.2016

Намерих решението на проблема. Изглежда, че удостоверяването на Yammer може да бъде конфигурирано по 2 начина - единият начин е да се конфигурира да използва същото удостоверяване като другите части на Office 365, а друг е да се използва различна конфигурация.

Ако се използва собствен SSO на Yammer (с други думи, Yammer има отделна конфигурация за ADFS), тогава възниква този проблем. Ако деактивирате Yammer SSO за вашата мрежа, цялото удостоверяване на yammer за „картографирани“ потребители ще се обработва от Office365. Когато това стане, можете да използвате API на Office 365.

person Ivan Inyushin    schedule 13.01.2016