Подключение к 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.