微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 RingCentral API 启用 Zapier OAuth 2.0 刷新令牌流

如何解决如何使用 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 的样子:

enter image description here

解决方法

需要基本身份验证

我找到了。默认 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 举报,一经查实,本站将立刻删除。