我尝试按照此处的示例https://msdn.microsoft.com/en-us/library/office/dn356686.aspx#sectionSection3使用Lync UCWA刷新OAuth令牌

他们的文档中的示例使用urn:microsoft.rtc:anonmeeting的grant_type,但我使用的是grant_type = password。首先,我的客户端已成功通过/ WebTicket / oauthtoken端点进行身份验证,并且我收到的access_token也很好。

几个小时后,我需要使用以下参数再次发布到/ WebTicket / oauthtoken来刷新OAuth令牌:

grant_type=password
username=$my_username
password=$my_password
ms_rtc_renew=$access_token (cwt=AA....)


但是,这将返回状态400,但有一个错误:invalid_request和标头“无有效的安全令牌”中的注释。我输入ms_rtc_renew的值与我在其他端点的所有标头中使用的值相同,即'Authorization':['Bearer $ access_token'],因此该令牌可以正常工作。

我已确保在发布到/ WebTicket / oauthtoken端点时使用的是Content-Type的标头:application / x-www-form-urlencoded,并且在发布之前我先对数据进行了urlencoding。

其他任何人都能够使用Lync UCWA 1.0和grant_type = password刷新OAuth令牌吗?是否有经验丰富的UCWA开发人员认识到我在更新令牌中缺少的内容?

提前致谢。

最佳答案

ms_rtc_renew特定于匿名会议授权类型。在同一文档中,它提到:


为经过身份验证的用户刷新令牌与获取新令牌的流程相同。


这是正确的思路,但是它确实忽略了一些关键信息。如果您有兴趣保持原始UCWA应用程序的有效性,则在对应用程序执行POST请求时有必要提供相同的信息,否则它将创建一个新的应用程序。

扩展答案

当您达到UCWA应用程序正在返回404请求并指示当前OAuth令牌无效的程度时,必须进行续订。遵循KeyTasks-CreateApplication步骤,在步骤#5上请求一个新令牌。此时,获取新令牌并替换Authorization标头,并尝试发出失败的请求。

如果这不起作用,请考虑使用相同的数据(UserAgent,EndpointId,文化)重新创建应用程序(步骤9)。您将需要替换所有保存的Json数据,因为应用程序Url可能会在实例之间改变(并非完全确定)。

10-07 15:54
查看更多