V2 API的OAuth 2.0-概述
Zoho CRM API使用OAuth2.0协议进行身份验证。它使用授权码授权类型获取授予令牌(代码)。这种授权类型允许您与任何应用程序共享特定的数据,同时保持用户名和密码的私密性。该协议为用户提供了一种安全、简便的身份验证方法。
为什么使用OAuth2?
您可以随时撤消客户对应用程序的访问。
无需向客户公开凭据。
即使客户端被黑客攻击,也不会显示任何信息,因为访问令牌是针对单个应用程序而不是整个客户端发出的。
可以应用特定的范围来限制或提供对客户端某些数据的访问。对于每个客户端应用程序,它都是不同的。
OAuth2.0是如何运作的?
术语
在开始使用Zoho CRM API之前,需要了解以下一些术语。
受保护资源
Zoho CRM资源,如线索、联系人、商机等。
资源服务器
托管受保护资源的Zoho CRM服务器。
资源所有者
您帐户的任何最终用户,可以授予对受保护资源的访问权。
客户端
向资源服务器发送请求以代表最终用户访问受保护资源的应用程序。
客户端ID
从连接的应用程序生成的使用者密钥。
客户端密钥
从连接的应用程序生成的使用者密钥。
认证服务器
授权服务器提供了必要的证书 (例如访问和刷新令牌) 给客户端。在本例中,它将是Zoho CRM授权服务器。
认证码
A 临时令牌由授权服务器创建并通过浏览器发送到客户端。客户端将此代码发送到授权服务器,以便获得访问和刷新令牌。
令牌
访问令牌
发送到资源服务器的令牌用来访问此用户受保护的资源。访问令牌提供对Zoho CRM API的安全临时访问,应用程序使用该令牌向连接的应用程序发出请求。每个访问令牌仅在一个小时内有效,并且只能用于范围中描述的一组操作。
刷新令牌
使用此令牌可用于获取新的访问令牌。此令牌的生命周期不受限制,直到最终用户撤消它为止。
作用域
Zoho CRM API使用选定的作用域,它控制客户端应用程序可以访问的资源类型。令牌通常使用不同的范围创建,以确保改进的安全性。例如,您可以生成一个作用域来创建或查看一个线索,或者查看元数据等等。
作用域包含三个参数——服务名称、作用域名称和操作类型。
定义范围的格式是scope=service_name.scope_name.operation_type
示例:
https://accounts.zoho.com.cn/oauth/v2/auth?scope=ZohoCRM.modules.ALL
这里,ZohoCRM是服务API名称,模块是范围名称,所有都是操作类型。
可用的作用域
作用域名称 | 关联的方法 |
---|---|
users | users.all |
org | org.all |
settings | settings.all, settings.territories, settings.custom_views, settings.related_lists, settings.modules, settings.tab_groups, settings.fields, settings.layouts, settings.macros, settings.custom_links, settings.custom_buttons, settings.roles, and settings.profiles |
modules | modules.all, modules.approvals, modules.leads, modules.accounts, modules.contacts, modules.deals, modules.campaigns, modules.tasks, modules.cases, modules.events, modules.calls, modules.solutions, modules.products, modules.vendors, modules.pricebooks, modules.quotes, modules.salesorders, modules.purchaseorders, modules.invoices, modules.custom, modules.dashboards, modules.notes, modules.activities, modules.search |
组作用域
组作用域提供对用户可以在记录上执行的所有功能的完整访问。例如,组作用域允许用户读取、创建、更新和删除所有模块中的记录。
示例:
https://accounts.zoho.com.cn/oauth/v2/auth?scope=ZohoCRM.modules.ALL,ZohoCRM.settings.ALL&client_id=
{client_id}&response_type=code&access_type={"offline"or"online"}&redirect_uri={redirect_uri}
在上面的示例中,用户可以访问客户端ZohoCRM帐户中的所有模块.
其他的例子有
scope=ZohoCRM.modules.READ(Read-only permission)
scope=ZohoCRM.modules.CREATE
scope=ZohoCRM.modules.UPDATE
scope=ZohoCRM.modules.DELETE
单独的作用域
特定的作用域用来访问特定模块中的数据而不用访问其它模块。
https://accounts.zoho.com.cn/oauth/v2/auth?scope=ZohoCRM.modules.leads.ALL,ZohoCRM.modules.deals.ALL,ZohoCRM.settings.ALL&
client_id={client_id}&response_type=code&
access_type={"offline"or"online"}&redirect_uri={redirect_uri}
上述作用域只允许用户访问来自客户端ZohoCRM帐户的线索和商机模块。
此外,您还可以为每个模块设置特定的权限,比如读取、创建、更新或删除。例如:
scope=ZohoCRM.modules.leads.READ(Read-only permission)
scope=ZohoCRM.modules.leads.CREATE
scope=ZohoCRM.modules.leads.UPDATE
scope=ZohoCRM.modules.leads.DELETE
用户访问令牌必须保密,因为它定义了您使用的API的类型。不要在任何公共论坛、公共存储库或网站的客户端代码(如HTML或JavaScript)上公开访问令牌。将其公开可能会导致数据被盗、丢失或崩溃。