从 Azure Web Job 连接到 Yammer

本文关键字:Yammer 连接 Job Azure Web | 更新日期: 2023-09-27 17:56:14

我正在尝试使用他们的 .NET SDK 连接到 Yammer,但我在管理这个问题时遇到了很多时间......本练习的要点是在 Azure 中创建一个应用程序,该应用程序定期(自动)联系 Yammer 并从特定 Yammer 组提取最新消息。

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


我尝试过的

尝试从 developer.yammer.com 的 .NET SDK 页面上给出的示例中找出要执行的操作,您可以在"标准流程"下看到一个示例,该示例显示了签名不正确的 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)

我已经在谷歌上搜索了有关使用Yammer .NET SDK的信息,但空手而归。连接到 Yammer 但没有任何一种的所有示例都与 .NET API 有任何关系。我看到的唯一相关的是Yammer .NET API示例,显然是由开发它的人上传的,他在GitHub上发布了代码。我已经检查了这个例子,但它中的两个部分 - 一个用于Windows Phone,一个用于Windows"现代应用程序" - 都依赖于可用的浏览器对象,或者无论如何都依赖于类似的东西。有重定向,我应该有一个 Yammer 的重定向 Uri 来指导我......另一个示例也是如此 - 这是我能找到的唯一另一个使用 .NET SDK 的示例。

我想签名不同的原因是因为这实际上根本不是相同的功能。我尝试使用的那个是Yammer.Oss.Api.Utils而示例应用程序甚至没有字母Utils在一起,除了类OAuthUtils的名称......这让我相信它可能在Yammer.Oss.Core.WinRT下,幸运的是,我根本无法参考...... Yammer.Oss.Core只包含CollectionsConstantsExtensionsSerialization

顺便说一下,在 .NET SDK 的公告中(请参阅上面的第一个链接),指向 SDK 文档的链接指向 Yammer 支持页面。

从 Azure Web Job 连接到 Yammer

跳过 .NET SDK,只需使用服务器端流自行执行授权。然后使用 HttpClient 发出请求并添加授权标头。SDK 可能对某些现代应用程序有所帮助,但对大多数人来说却是矫枉过正。手动使用 API 时,您必须处理的最糟糕的事情是使用 JSON.NET 或其他 JSON 库反序列化 JSON 响应。

没有说出你试图构建什么,但 AFAIK WebJobs 没有 UI,因此你需要从控制台应用或网站进行授权。然后将生成的 OAuth 令牌存储在 Web 作业可以访问它的位置。如果每个用户需要一个 OAuth 令牌,则需要将这些令牌存储在数据库中,但要努力保护它们,因为每个 OAuth 令牌都提供对其 Yammer 帐户的访问权限。