持久性
实现 OAuth 持久性
应用程序获得授权后,可对后续针对 Zoho CRM 的用户数据请求使用 OAuth 访问令牌和刷新令牌。因此,客户端应用需要保存这些令牌。
持久性是通过编写内置 IZohoPersistenceHandler 接口的实现来完成的,该接口具有以下回调方法。
- SaveOAuthTokens(ZohoOAuthTokens 令牌) - 在提取以下项时调用:
- 使用授权令牌提取访问和刷新令牌。
- 使用刷新令牌提取访问令牌。
- DeleteOAuthTokens() — 保存新收到的令牌之前调用。
- GetOAuthTokens() — 触发提取已保存令牌的请求之前调用。此方法应返回 ZohoOAuthTokens 对象,以便库进行处理。
我们的 C# SDK 在客户端库中提供 IZohoPersistenceHandler 接口的三种示例实现。它们分别是:
- ZohoOAuthFilePersistence
- ZohoOAuthDBPersistence
- ZohoOAuthInMemoryPersistence
SDK 提供的实现类或 handler 的名称(及其用于分隔的组合逗号)应作为 peristence_handler_class 键的值给出。
例如,在 app.config 配置文件的 oauth_configuration 部分下面,'persistence_handler_class=<persistence_handler_class, assembly_name>'。
注:
- 如果未指定持久性 handler 类,则默认由 InMemory Persistence handler 负责处理持久性实现。
- 预先定义的持久性 handler 类属于组合 ZCRMSDK。
ZohoOAuthFilePersistence
此持久性方法使用本地文件来读写 OAuth 令牌。
库用于读写令牌值的完整文件路径应在 app.config 文件中的 oauth_configuration 部分下面指定为 oauth_tokens_file_path 键的值。
ZohoOAuthDBPersistence
这种持久性方法使用自定义 MySQL 持久性。使用此项,您应确保以下几点。
- MySQL 应在同一台机器的默认端口 3306 运行。
- 数据库名称应该为 zohooauth。
- 必须有一个名为 *oauthtokens* 的表,此表带有以下列:useridentifier (varchar(100))、accesstoken (varchar(100))、refreshtoken (varchar(100)) 和 expirytime (bigint)。
ZohoOAuthInMemoryPersistence
使用单元素集合类来存储和取回令牌。默认实现,不需要外部文件。
注:
- ZohoOAuthFilePersistence 和 ZohoOAuthInMemoryPersistence 实现仅支持存储和刷新单个用户的令牌。因此,仅当应用代表单个用户访问 Zoho API 时才应使用它们。
- 如果应用必须支持多个用户,请使用 ZohoOAuthDBPersistence 或编写您自己的 IZohoPersistenceHandler 实现。