0

我正在尝试构建一个使用 RingCentral PHP SDK 订阅存在事件的 Web 应用程序。应用程序将使用授权码流。我正在获取访问令牌,但不知道如何将此令牌与 SDK 和平台对象一起使用。看起来 SDK 适合使用密码流。

POST /restapi/v1.0/subscription HTTP/1.1我应该使用普通 curl在授权标头中调用传递访问令牌吗?或者有办法使用 RingCentral SDK 对象吗?我错过了什么吗?

4

1 回答 1

1

如果您可以提供有关您的用例以及如何实现代码的更多信息,我可以提供更多详细信息。

要使用 PHP SDK 创建订阅,这里是Github 上 RingCentral PHP SDK 存储库中包含的演示代码

TL;博士

我看到有人问两个问题:

  1. RingCentral PHP SDK是否支持授权流程(3-Legged OAuth),因为目前看来 SDK 只专注于Password Flow?

授权流程是构建多租户应用程序的最佳实践,因为它消除了应用程序存储与 RingCentral 帐户关联的用户名和密码的安全风险。RingCentral PHP SDK 支持授权流程和密码流程认证类型。一旦您的 PHP SDK 实例有效access_token,它就可以很容易地创建订阅。

我们可以在 Github 上的 PHP SDK 代码src/Platform.php中看到,该常量AUTHORIZE_ENDPOINT被支持作为来自对authUrl()的请求的可返回值。

您可以在PHP SDK 支持的Grokify 的 RingCentral OAuth PHP 示例中看到。Authorization Flow

一旦您的 SDK 实例具有有效的access_token,它将Authorization在您 createSubscription()、addListeners() 和 register() 时在标头中使用该令牌,如此 PHP 演示代码中所示,以创建订阅

  1. 如何使用 PHP SDK创建RingCentral 订阅(SDK 是否有与之关联的对象我可以使用)?

您可以通过多种方式使用 RingCentral SDK。我在上面的 TL;DR 中提供了关于创建订阅的 PHP 演示链接。

由于您使用的是RingCentral PHP SDK,因此您仅限于服务器端实现,因为 PHP 是一种仅限服务器端的语言。

如何选择实现订阅完全取决于应用程序的用例需求和架构要求。由于您已经表明您正在使用Authorization Flow,这让我相信您正在构建一个多租户、基于 Web 的应用程序集成。既然你说你得到了一个access_token,我猜你已经调用了Platform.login()并将你从 3-Legged 身份验证请求中收到并在重定向中收到的代码值传递给它。/restapi/oauth/authorize我不确定您是从客户端还是服务器执行所有这些操作,但我假设是服务器。

  • 您需要将会话与服务器端的 SDK 实例和订阅相关联。这意味着您必须为每个客户端会话管理多个 SDK 和订阅实例。您可能还需要实现 WebSockets 或 Long-Polling,以便实现订阅启用的近乎实时的事件更新。因此,虽然 RingCentral PHP SDK 可以与 Authorization Flow 一起使用,但我个人建议不要将它用于任何最终用户、客户端、多租户应用程序开发(除非您已为将会话映射到 SDK 做好了适当的准备) /Subscription 实例,如我之前所述。

  • 如果您不想在服务器端管理所有这些,您可以在 PHP 应用程序的客户端使用RingCentral JS SDK,但这可能会有点混乱,并且需要重新构建您的解决方案,具体取决于取决于你如何建造东西。当然,这种方法具有数据易失性方面,这取决于您想对从订阅中获得的数据做什么,以及是否需要它在会话之间持续存在(再次取决于您的用例)。

于 2016-10-14T15:47:36.560 回答