您如何使用持久凭证对RingCentral的API进行身份验证?

时间:2018-07-22 15:15:32

标签: api oauth-2.0 ringcentral

一个客户要求我开发一种解决方案,其中涉及从Ring Central提取呼叫信息。具体来说,我想建立一个Webhook来在呼叫传入时提取实时数据,然后使用呼叫日志同步进行夜间对帐。这是我使用RingCentral的第一个项目。

RC文档并不十分清楚。我发现了以下信息:http://ringcentral-api-docs.readthedocs.io/en/latest/oauth/,这意味着我需要注册为第三方开发人员帐户,使用自己的凭据,然后每次需要提取任何内容时都请求访问客户的数据。但是,我正在开发的解决方案将由客户端拥有并在其服务器上运行,并且他们不需要任何手动交互,因此这不是最佳解决方案。他们当然不会想要每天多次批准我的脚本访问。

如何使用客户端的凭据,或者客户端如何获得持久的凭据,从而允许我对其数据进行非过期访问,以及如何使用这些凭据连接到API?

我将使用RC的REST API在Lucee和MySQL上使用CFML开发此解决方案。数据也将发送到我的客户的主要业务系统Rent Manager。

2 个答案:

答案 0 :(得分:1)

在与四位代表交谈后,我没有发现任何有用的东西,然后花了数小时进行试错和遍历文档。最终我想出了办法。

首先,请勿创建免费的开发者帐户。最终,您将看到一个升级帐户的屏幕,最终将使您的帐户与您要连接的现有RC帐户相同!因此,首先登录到您正在开发应用程序以从中提取数据的帐户。

登录后,创建一个新应用,并确保选择“仅服务器(无UI)”选项。这将使您的应用符合我们要使用的身份验证方法的条件。如果不选择此平台类型,则身份验证调用将失败。

之后,请按照文档中的说明进行“密码流”身份验证。当前在https://developer.ringcentral.com/api-docs/latest/index.html?_ga=2.103110336.1372637327.1532456796-967119171.1528482913#!#RefPasswordFlow

中有详细介绍

在ColdFusion中,我的通话最终看起来像这样:

    <cfhttp method="POST" url="#application.RCserver#/restapi/oauth/token">
        <cfhttpparam type="header"          name="Content-Type"     value="application/x-www-form-urlencoded" />
        <cfhttpparam type="header"          name="Authorization"    value="Basic #ToBase64("#RCclientID#:#RCsecret#")#" />
        <cfhttpparam type="body"            value="grant_type=password&access_token_ttl=600&username=#RCuname#*#RCext#&password=#RCpword#">
    </cfhttp>

答案 1 :(得分:0)

听起来您正在构建一个客户可以使用的应用程序。

由于您的应用是用户和应用所有者位于不同组织中的“公共”应用,因此可以使用OAuth 2.0授权代码流。 RingCentral的OAuth 2.0解决方案带有访问令牌和刷新令牌对。默认情况下,访问令牌有效期为一小时,之后您可以使用刷新令牌(自动通过官方的RingCentral SDK)获得一个新的令牌。默认情况下,刷新令牌的有效期为1周。这意味着您的应用将有1周的“空闲时间”,因此,如果在1周内未进行API调用,则用户需要进行身份验证,否则无需用户采取任何措施,该应用将继续运行,即使更改密码也是如此。从安全角度来看,此解决方案的好处是永远不会将用户的凭据传递到您的应用程序。

如果这种方法对您不起作用,请通过devsupport@ringcentral.com与我们的开发支持团队联系,以讨论您的用例。