从 Azure Webjob 连接到 Yammer

Connecting to Yammer from Azure Webjob

我正在尝试使用他们的 .NET SDK 连接到 Yammer,但是我很难管理这个...这个练习的重点是在 Azure 中创建一个应用程序,它定期 - 并且自动 - 联系Yammer 并从特定 Yammer 组获取最新消息。

有谁知道从控制台应用程序使用 Yammer .NET SDK 的正确方法,它不依赖于浏览器(a.k.a。直接用户交互)通过以下方式成功连接OAuth 身份验证?


我试过的:

试图从 .NET SDK page on developer.yammer.com 上给出的示例中找出要做什么,您可以在 "Standard Process" 下看到一个示例,该示例显示 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 的示例,但 none 在任何方面都与 .NET API 相关。我所看到的唯一相关的东西是 Yammer .NET API example uploaded, apparently, by the person who developed it, who posted the code on GitHub. I have checked this example but the two parts in it - one for Windows Phone and one for Windows "Modern App" - both rely on a Browser object being available, or something to that effect anyway. There are redirects, I'm supposed to have a RedirectUri for Yammer to direct me... So does this other example - 这是我能找到的使用 .NET SDK 的唯一其他示例。

我想签名不同的原因是因为这实际上根本不是同一个函数。我尝试使用的那个在 Yammer.Oss.Api.Utils 中,而示例应用程序甚至没有字母 Utils 除了 class OAuthUtils 的名称之外。 . 这让我相信它可能在 Yammer.Oss.Core.WinRT 之下,幸运的是,我根本无法引用... Yammer.Oss.Core 仅包含 CollectionsConstants , ExtensionsSerialization.

顺便说一下,在 .NET SDK 的公告中(首先参见上面的 link),SDK 文档的 link 指向 Yammer 支持页面。

跳过 .NET SDK 并使用 server-side flow. Then make the requests with HttpClient and add the Authorization header 自行完成授权。该 SDK 可能对某些现代应用程序有帮助,但对大多数人来说有点过分了。手动使用 API 时,您必须处理的最糟糕的事情是使用 JSON.NET 或其他 JSON 库反序列化 JSON 响应。

您没有说明您要构建什么,但 AFAIK WebJobs 没有 UI 因此您需要从控制台应用程序或网站进行授权。然后将生成的 OAuth 令牌存储在 WebJob 可以访问的地方。如果您需要每个用户一个 OAuth 令牌,您需要将它们存储在数据库中,但要努力保护它们,因为每个 OAuth 令牌都提供对其 Yammer 帐户的访问权限。