在没有(或很少有)用户交互的情况下发布Yammer消息

时间:2020-06-23 06:42:17

标签: c# yammer

我们有一个创新工具,允许用户创建/评论/喜欢想法等。当前,该工具中显示的是最新操作,例如“约翰·多伊(John Doe)喜欢“伟大的想法”这个想法”,“彼得·帕克(Peter Parker)评论“伟大的想法”。

现在,我们要将这些操作发布到yammer。我们通过“ / oauth2 / authorize / ...”成功进行了身份验证。我们检索可用于检索最终通过POST将消息发布到api / v1 / messages.json

所需的承载的客户代码。

因此我们创建了Auth URL:

  public string CreateUserAuthUrl(YConfig config)
        {
            return $"https://www.yammer.com/oauth2/authorize?client_id={config.ClientId}&response_type=code&redirect_uri={HttpUtility.UrlEncode(config.RedirectUrl)}";
        }

重定向完成后,我们可以使用tie userCode创建承载:

public AuthenticationInformation GetAppAuthBearer(YConfig config, string userAuthCode)
{
    var url = $"https://www.yammer.com/oauth2/access_token?client_id={config.ClientId}&client_secret={config.ClientSecret}&code={userAuthCode}&grant_type=authorization_code";
    return PostRequest<AuthenticationInformation>(url, null);
}

到目前为止一切正常。

现在,我们需要通过完全没有用户交互的预定服务发送这些消息(例如,每天检查所有告诉“彼得的想法'很棒的想法'已在10天后关闭”的想法)

因为这里没有用户交互(因此也没有OAuth),所以我们只是将CliendCode存储到保存位置,并使用该代码稍后发送消息。

这似乎可以正常工作几个小时,但寿命似乎并不长。我们的想法是用户对App ONCE进行身份验证,我们将能够连续发送消息。

但是一天左右后发生的事情是,当我们尝试检索clientCode的载体时,我们检索到一个“错误请求(400)”。

对此可以做什么? (顺便说一句:我们确实不需要为该消息分配用户。像“ APP说:有人喜欢这个主意”之类的消息就可以了。

TL; DR:我们可以永久存储UserCode以便向Yammer发送异步消息吗?或者发布根本未分配给任何用户的系统消息?

0 个答案:

没有答案