要在Support+Chat 帐户和第 4 阶段Chat 帐户中使用 Chat API,您需要生成OAuth访问密钥以对 API 请求进行身份验证。不支持基本身份验证。但是,首次生成密钥可能会有点混乱,因此本教程将通过示例逐步说明如何手动生成密钥。完成后,您应获得了一个密钥,可在 Chat API 请求中使用该密钥来读取和写入数据。

如果您要构建应用程序,则应将密钥生成功能构建到您的应用中,实现此流程自动化。

为 Chat API 创建访问密钥有两种方法:一种更快、更方便,用于测试环境(使用“隐式”授权流程);另一种更长、更正式,用于生产环境(使用“授权代码”授权)。流程)。本教程将针对这两方面进行介绍。

条件

本教程适用于已应用上述文章中所述所有更改的整合 Chat 帐户。此功能目前正在逐步推出,因此某些帐户可能会先于其他帐户需要。如果您不确定您的帐户是否已收到所有的更改,请随时联系我们的Support团队,他们会为您进行确认。

注意:帐户更改的一个副作用是需要重新创建OAuth密钥。如果您在更改生效之前已完成本教程,之后您将需要重新执行这些步骤。

步骤

OAuth “隐式”授权工作流程包括以下步骤:

  1. 创建OAuth API 客户端。
  2. 使用第 1 步中的信息完成OAuth隐式授权工作流程,获取密钥。

创建OAuth API 客户端

首先,我们需要一个 API 客户端。前往Zendesk Chat>帐户>API 和 SDK ,然后单击添加 API 客户端按钮。输入您选择的客户和公司的名称,对于重定向 URL,输入http://localhost:8080.它应如下所示:

单击Create API Client(创建 API 客户端)以完成设置。您将看到一个弹出窗口,其中包含客户端 ID 和密钥。非常重要:客户端密钥仅显示一次,因此请记下它以供以后使用。如下所示:

现在我们的 API 客户端已准备就绪,请记下您的客户端 ID 和客户端密钥,然后单击好的,知道了。我们现已准备就绪,可以完成OAuth授权工作流程。

完成OAuth隐式授权工作流程以获取密钥

此方法使用OAuth “隐式”授权工作流程。另一种方法是使用OAuth “授权代码”授予工作流程(如下一部分所示)。如果手动进行,与稍后显示的授权代码授予流程相比,此方法步骤更少,更方便。

1.按照上面的“创建OAuth API 客户端”步骤进行操作

2.从OAuth客户端收集此信息

  • 客户端 ID:CLIENT_ID
  • 您的 Zendesk 子域名

3.用您自己的CLIENT_ID 和 SUBDOMAIN 格式化以下 URL,将其粘贴到新的浏览器标签中,然后按Enter 。

https://{subdomain}.zendesk.com/oauth2/chat/authorizations/new?response_type=token&client_id=CLIENT_ID&scope=read%20write&subdomain=SUBDOMAIN

注意:

  • 如果 Chat OAuth客户端只有一个重定向 URL 值,则可以选择传递 redirect_uri 值。系统将默认使用OAuth客户端的重定向 URL 值。

  • 如果OAuth客户端有多个重定向 URL 值,则需要传递一个 redirect_uri 值。如果传递了 redirect_uri 值,则需要对其进行URL 编码。在上面的例子中,可选的 redirect 参数为: redirect_uri=http%3A%2F%2Flocalhost%3A8080

4.系统将拨打电话,可能要求您登录并选择“允许”以生成密钥。

如果调用成功,您浏览器的地址字段将包含新的OAuth密钥(作为 access_token 值返回)。

尽管浏览器主窗口中显示了看似错误的消息,但如果浏览器 URL 字段中返回“access_token”,则说明操作成功!

这里是工作流程演示:

 

生成密钥的更长的替代方法

这些步骤与上一部分一样创建一个密钥,但演示了OAuth “授权代码”授予流程。记下您的OAuth客户端详情,这些信息将在下文中使用。

将使用占位符而不是真实数据 —— 请记住,您的OAuth客户端密钥相当于您 Chat 帐户的密码,应高度安全保护。

  • 客户端 ID: CLIENT_ID
  • 客户端密钥: CLIENT_SECRET
  • 重定向 URI: http://localhost:8080
  • 子域名:您的 Zendesk 子域名;例如,如果您的帐户位于niall.zendesk.com,此值为 niall
  • 授权代码: 我们还没有

1.准备第一个 URL

我们将在这里创建一个 URL 来请求授权代码。您将需要前往https://{subdomain}.zendesk.com/oauth2/chat/authorizations/new,并添加一些查询参数以传递上述一些信息。这次我们需要:

  • response_type:始终为 code
  • redirect_uri:我们将在授予访问权限后重定向到哪里,http://localhost:8080获取我们教程的
  • client_id:特定于您,如之前所述
  • scope:此密钥将具有的访问权限,我们将选择read和 write
    • 如果针对Chat对话 API使用密钥,还包括“chat”范围。
  • subdomain:您的 Zendesk 子域名

综合考虑这些内容并进行 URL 编码,您将得到一个如下所示的最终 URL:

https://{subdomain}.zendesk.com/oauth2/chat/authorizations/new?response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A8080&client_id=CLIENT_ID&scope=read%20write&subdomain=SUBDOMAIN

与CLIENT_ID和SUBDOMAIN唯一的区别是您自己的 URL。

2.准备 cURL 调用

在实际访问该 URL 之前,让我们先构建稍后将运行的 cURL 调用。这次我们需要:

  • grant_type:始终为 authorization_code
  • code:这将在我们允许从 URL 访问后获取
  • client_id:您的客户端 ID
  • client_secret:您的客户端密钥
  • redirect_uri:同上一步 - http://localhost:8080
  • scope:同上一步相同 -read和 write

当我们把所有这些放在一起时,我们会得到一个命令,应如下所示:

curl https://{subdomain}.zendesk.com/oauth2/chat/ \
 -H "Content-Type: application/x-www-form-urlencoded" \
 -d 'grant_type=authorization_code&code=AUTH_CODE&client_id=CLIENT_ID&client_secret=CLIENT_SECRET&redirect_uri=http%3A%2F%2Flocalhost%3A8080&scope=read%20write' \
 -X POST

请记住:您应该已经有CLIENT_ID和CLIENT_SECRET现在,但我们没有AUTH_CODE还没有。

3.获取授权代码

现在转到我们在第 1 步中生成的 URL。您将看到这样的页面:

单击允许以授予访问权限,您将被重定向到重定向 URL。它看起来像是一个损坏的页面,但重要的是要在 URL 中查看授权代码,即之后的所有内容 ?code=

复制该代码,让我们开始最后一步!授权代码仅短期内有效。如果您等待的时间超过几分钟,可能需要重新运行上述步骤以获取新的代码值。

4.进行 cURL 调用以获取密钥

回到我们在步骤 2 中构建的 cURL 调用,它看起来像这样

curl https://{subdomain}.zendesk.com/oauth2/chat/token \
 -H "Content-Type: application/x-www-form-urlencoded" \
 -d 'grant_type=authorization_code&code=AUTH_CODE&client_id=CLIENT_ID&client_secret=CLIENT_SECRET&redirect_uri=http%3A%2F%2Flocalhost%3A8080&scope=read%20write' \
 -X POST

替换AUTH_CODE替换为第 3 步中的代码,并从终端应用程序运行命令。您将收到 JSON 对象形式的响应,如下所示:

{
 "access_token": "TOKEN",
 "token_type": "Bearer",
 "refresh_token": "REFRESH_TOKEN",
 "scope": "read write"
}

5.测试新密钥

建议您进行测试以确认其是否如预期工作,因此我们现在就可以进行测试。最简单的方法是直接拨打GET到/api/v2/chats查看帐户信息:

curl https://{subdomain}.zendesk.com/api/v2/chat/chats -H "Authorization: Bearer TOKEN"

替换TOKEN在第 4 步中检索的内容。 

其它信息

机密 client_type

上述部分演示了“隐式”授权类型和“授权代码”授权类型。Chat API 还支持使用客户端凭证的机密授予类型。参考文档中的机密授权类型对此有更多描述。

对于管理员和专员用于报告指标等用途的 API 调用,最好获取机密授予类型的OAuth密钥。您将需要设置client_type为“机密”。默认情况下,此值设置为“public”。这只能通过 API 完成,具体方法如下:

1.获取客户端 ID

首先我们需要您的新客户端的 ID。您可以使用新密钥通过以下调用获取此密钥:

curl https://{subdomain}.zendesk.com/api/v2/chat/oauth/clients -H "Authorization: Bearer TOKEN"

这将显示您所有的客户端。可以只有一个,但如果您有多个,则应挑选一个要更新的,并记下其 ID。

2.更新 client_type

有了客户端 ID 后,您就可以运行以下 cURL 调用来更新client_type属性:

curl https://{subdomain}.zendesk.com/api/v2/chat/oauth/clients/{client_ID} -d '{"client_type": "confidential"}' \
 -X PUT -H "Content-Type: application/json" -H "Authorization: Bearer TOKEN"

此操作完成后,您的密钥可用于受限端点。

翻译免责声明:本文章使用自动翻译软件翻译,以便您了解基本内容。 我们已采取合理措施提供准确翻译,但不保证翻译准确性

如对翻译准确性有任何疑问,请以文章的英语版本为准。

由 Zendesk 提供技术支持