如果您正在测试或建立一个内部应用程序,您可能不希望您的 API 请求与特定用户关联,就像 基本身份验证一样,需要用户名和密码,或 API 密钥身份验证,仍然需要用户名。第三种选项是使用 OAuth 访问密钥。
乍一看,创建一个 OAuth 密钥及其复杂的授权流程,似乎是一项令人生畏的任务。然而,您可以跳过这个过程中最复杂的部分,直接从 API 获取访问密钥。这篇文章描述了如何通过几个简单的步骤创建您自己的 OAuth 密钥,用于测试目的。
创建 OAuth 客户端
您的第一步是创建一个 OAuth 客户端用于测试。
- 在 管理中心中, 单击 应用和整合 图标 (),然后选择 API > Zendesk API。
- 在 OAuth 客户端 标签上,单击列表右上角的 添加 OAuth 客户端 。
设置客户端用于测试目的与创建正常的 OAuth 客户端稍有不同。请注意以下区别:
- 您的重定向必须是有效的 HTTPS URL,但无需是此项目的真实网站。例如:https://somesite.com。
- 唯一标识符是用于代码的客户端名称。您也可以使用 OAuth 客户端 API 的 列表客户 端端点获取客户端 ID。
- 您可能需要复制密钥,以供今后参考。它在您创建后不会再次显示,但如果您想用它建立 OAuth 网络应用或用于其它项目,您会需要它。
- 所有其它字段都可以填写虚拟数据。
创建访问密钥
现在您已拥有使用 OAuth 密钥 API 创建密钥所需的一切。以下是使用 cURL 提交请求的方法:
curl https://{subdomain}.zendesk.com/api/v2/oauth/tokens.json \
-H "Content-Type: application/json" \
-d '{"token": {"client_id": "your_client_id", "scopes": ["read", "write"]}}' \
-X POST -v -u {email_address}:{password}
关于此代码的一些事项需要注意:
- 请记得用您自己的子域名替换子域名占位符
- "client_id" 的值是您从 OAuth 客户端页面复制的数字
- 将您的范围设置为 ["读取", "写入"] ,除非您专门测试对资源的只读访问
- 如果您的组织使用 单点登录 (SSO),而 Zendesk 密码已从 Zendesk 帐户删除,您将需要使用 API 密钥对请求进行身份验证:
-u {email_address}/token:{api_token}
。在 Support API 文档中查看 API 密钥。
运行您的 cURL 请求。它应返回一个 JSON 包,包含一个具有几个属性的密钥对象:
"完整令牌"的值是您的访问密钥。 复制并妥善保存!
请注意响应的"过期时间"属性为"null",也就是说,密钥不会停止工作,直到您删除客户端本身。此外,下次您访问管理中心的 OAuth 客户端 列表时,您的新客户端的活跃密钥数量应增加了 1。
使用您的新访问密钥
如果您没有任何可使用的访问密钥,它有什么用? 以下示例中没有一个使用用户名或密码。这是我设计的!OAuth 访问密钥不取决于任何用户帐户,这是在您的应用和脚本中使用密钥的优势之一。
使用访问密钥对 API 请求进行身份验证
任何需要身份验证的 API 调用都可使用 OAuth 访问密钥进行。例如,对通常这样的工单端点的调用:
curl https://{subdomain}.zendesk.com/api/v2/tickets.json \
-u {email_address}:{password}
带有访问密钥的样子:
curl https://{subdomain}.zendesk.com/api/v2/tickets.json \
-H "Authorization: Bearer {access_token}"
在 API 客户端中使用访问密钥
您也可在我们任意 API 客户端 中使用 OAuth 访问密钥。例如, Ruby 客户端 通常需要使用用户名和密码(或 API 密钥)进行身份验证,因为这样:
config.username = "user email" config.password = "user password"
如果您使用访问密钥,情况如下:
config.access_token = "your OAuth access token"
翻译免责声明:本文章使用自动翻译软件翻译,以便您了解基本内容。 我们已采取合理措施提供准确翻译,但不保证翻译准确性
如对翻译准确性有任何疑问,请以文章的英语版本为准。