我们有一个创新工具,允许用户创建/评论/喜欢想法等。当前,该工具中显示的是最新操作,例如“约翰·多伊(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发送异步消息吗?或者发布根本未分配给任何用户的系统消息?