如何解决如何使用 RingCentral API 启用 Zapier OAuth 2.0 刷新令牌流
我使用 Zapier 的内置 OAuth 2.0 实现和 RingCentral API 构建了 Zapier 集成。该集成适用于启动 OAuth 2.0 对话框、获取访问令牌和调用所需的 API。但是,令牌刷新不起作用,因此 1 小时后 API 返回未经授权的用户错误,用户需要再次登录。 1个小时的时间有点长,再次手动登录后调试很慢。
我找不到 Refresh Token API 流的 Zapier 日志记录,所以我无法判断它是否被调用,如果是,结果和错误消息是什么。
如何启用刷新令牌流程,有没有办法调试 Zapier 执行的刷新令牌工作流程?
以下是有关 OAuth 2.0 流程的 Zapier 的信息:
https://platform.zapier.com/docs/oauth#add-access-token-request-and-refresh-token-request-urls
以下是有关刷新令牌流的 RingCentral API 的信息:
https://developers.ringcentral.com/api-reference/Get-Token
这是带有 RingCentral API 信息的 Zapier OAuth 2.0 刷新令牌请求 UI 的样子:
解决方法
需要基本身份验证
我找到了。默认 Zapier OAuth 实现中缺少的 RingCentral API 要求是令牌刷新流程中的基本身份验证。 Zapier 包括初始授权代码流的基本身份验证 Authorization
标头,但不包括刷新令牌流。
我最终预先计算了 Authorization
标头字段,并使用“切换到代码模式”手动将其插入到刷新令牌流请求中,我添加了 Authorization
标头,如下所示:
const options = {
url: 'https://platform.ringcentral.com/restapi/oauth/token',method: 'POST',headers: {
'content-type': 'application/x-www-form-urlencoded','accept': 'application/json','Authorization': 'Basic <Base64EncodedClientIdAndClientSecret>'
},params: {
},body: {
'refresh_token': bundle.authData.refresh_token,'grant_type': 'refresh_token'
}
}
Base64 用于编码以下内容:
process.env.CLIENT_ID + ':' + process.env.CLIENT_SECRET
起初,我将 Authorization
设置为以下内容,但收到了未定义 btoa
的 Zapier 错误。
'Basic ' + btoa(process.env.CLIENT_ID+':'+process.env.CLIENT_SECRET)
测试周期时间
通过将 access_token_ttl
值硬编码为最小值 600
秒(10 分钟)与默认的 3600
秒( 1 小时)。
Zapier 刷新令牌流日志
我仍然无法找到 Zapier 刷新令牌流的 Zapier 日志。
如果无法查看 Zapier 是否确实在发送令牌刷新请求,则测试此情况的一种方法是将令牌刷新 URL 临时设置为监控 URL,例如 RequestBin。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。