Подключение к Yammer из Azure Webjob

Я пытаюсь подключиться к Yammer с помощью их.NET SDK, но мне очень тяжело управлять этим... Цель этого упражнения - создать приложение в Azure, которое периодически - и АВТОНОМНО - связывается с Yammer и получает последние версии. сообщения от определенной группы Yammer.

Кто-нибудь знает, как правильно использовать Yammer .NET SDK из, скажем, консольного приложения, которое не использует браузер (так называемое прямое взаимодействие с пользователем) для успешного подключения через аутентификацию OAuth?


Что я пробовал:

Пытаясь выяснить, что делать на примере, приведенном на странице.NET SDK на developer.yammer.com, вы можете увидеть в разделе "Стандартный процесс" пример, демонстрирующий LaunchSignIn() функция с неверной подписью! В примере показано использование как:

var authResponse = await OAuthUtils.LaunchSignIn(_clientConfig.ClientId, _clientConfig.RedirectUri, ssoEnabled);

тогда как фактически подпись, которую я получаю от dll:

void OAuthUtils.LaunchSignIn(string clientId, string RedirectUri)

Я прощу пропавших ssoEnabled параметр... но в примере утверждается, что функция получает ответ, от которого Code затем извлекается. Это, конечно, часть, отсутствующая в моей попытке позвонить:

(awaitable) Task<AuthEnvelope> AuthClient.AuthenticateAppAsync(string code)

Я искал в Google информацию об использовании Yammer .NET SDK, но пришел с пустыми руками. Все примеры примеров подключения к Yammer, но ни один из них не имеет никакого отношения к.NET API. Единственное, что я имею в виду, - это пример API Yammer.NET, загруженный, по-видимому, разработчиком, который разместил код на GitHub. Я проверил этот пример, но две части в нем - одна для Windows Phone и одна для Windows "Modern App" - обе зависят от того, доступен ли объект Browser или что-то в этом роде в любом случае. Есть перенаправления, я должен иметь RedirectUri для Yammer, чтобы направлять меня... Так же, как и этот другой пример - который был ТОЛЬКО другим примером использования.NET SDK, который я мог найти.

Я предполагаю, что причина в том, что подпись отличается, потому что это на самом деле не та же самая функция вообще. Тот, который я пытаюсь использовать, находится в Yammer.Oss.Api.Utils в то время как пример приложения даже не имеет букв Utils вместе, кроме как в названии класса OAuthUtils... что заставляет меня верить, что это возможно под Yammer.Oss.Core.WinRT о котором, как повезет, я вообще не могу сослаться... Yammer.Oss.Core только содержит Collections, Constants, Extensions а также Serialization,

Кстати, в анонсе.NET SDK (см. Первую ссылку выше) ссылка на документацию по SDK ведет на страницу поддержки Yammer.

1 ответ

Решение

Пропустите.NET SDK и просто выполните авторизацию самостоятельно, используя поток на стороне сервера. Затем сделайте запросы с помощью HttpClient и добавьте заголовок авторизации. SDK может быть полезен в некоторых современных приложениях, но для большинства людей это излишне. При работе с API вручную худшее, с чем вам придется столкнуться, это десериализация ответов JSON с помощью JSON.NET или другой библиотеки JSON.

Вы не говорите, что вы пытаетесь создать, но у AFAIK WebJobs нет пользовательского интерфейса, поэтому вам нужно будет выполнить авторизацию из консольного приложения или веб-сайта. Затем сохраните полученный токен OAuth где-нибудь, чтобы WebJob мог получить к нему доступ. Если вам нужен токен OAuth для каждого пользователя, вам необходимо сохранить их в базе данных, но приложите усилия для их защиты, поскольку каждый токен OAuth обеспечивает доступ к своей учетной записи Yammer.

Другие вопросы по тегам