如何使用 Zoho SDK 对基于服务器的应用程序进行身份验证?
Posted
技术标签:
【中文标题】如何使用 Zoho SDK 对基于服务器的应用程序进行身份验证?【英文标题】:How do I authenticate my server based app with Zoho SDK? 【发布时间】:2021-11-05 09:28:54 【问题描述】:我希望这是有道理的。我正在使用 Zoho C# SDK 示例将记录写入 CRM Leads。在调用 recordOperations.CreateRecords();尝试从令牌存储中获取令牌后失败。 这是我要保存的令牌
Token token = new OAuthToken(
"xxxx.clientid.goes.here.xxxxx",
"xxxx.clientsecret.goes.here.xxxx",
"REFRESH/GRANT token",
TokenType.GRANT,
string.Empty);
TokenStore tokenStore = new CustomTokenStore();
tokenStore.SaveToken(user, token);
我正在将此令牌发送到 SDKInitilizer.Initialize。此时没有错误。接下来,我尝试创建一个潜在客户。当它进入 recordOperations.CreateRecords();它尝试 GetToken 并且我已经对其进行了硬编码以准确返回上面令牌对象中的内容。 CreateRecords 为“invalid_code”引发错误。这是日志文件中的内容
21-09-07 16:49:34 [INFO]: Initialization successful for Email Id : myemail@email.com in Environment : https://www.zohoapis.com.
21-09-07 16:49:47 [INFO]: Access Token has expired. Hence refreshing.
21-09-07 16:49:50 [ERROR]: Exception in authenticating current request : "Code":"INVALID CLIENT ERROR","Message":"invalid_code","Cause":null,"Details":null,"StackTrace":" at Com.Zoho.API.Authenticator.OAuthToken.ParseResponse(String response)\r\n at Com.Zoho.API.Authenticator.OAuthToken.RefreshAccessToken(UserSignature user, TokenStore store)\r\n at Com.Zoho.API.Authenticator.OAuthToken.Authenticate(APIHTTPConnector urlConnection)\r\n at Com.Zoho.Crm.API.Util.CommonAPIHandler.APICall[T](Type className, String encodeType)","Data":,"InnerException":null,"HelpLink":null,"Source":"ZCRMSDK","HResult":-2146233088
它在尝试刷新令牌时似乎失败了,所以我认为我没有在令牌对象中发送正确的信息?
*** 编辑@sucasa *** 这就是我发送到 Initialize 方法的内容。
自从我的第一篇文章以来,我发现,我没有从 Initialize 获得初始的 token
,它没有调用我创建的自定义 TokenStore.SaveToken()
,它应该,对吗?如果我保存它,我所拥有的只是上面的,而不是实际的token
。所以我认为当我去创建潜在客户时,我实际上并没有要刷新的初始令牌。我希望这更清楚。
【问题讨论】:
【参考方案1】:访问令牌过期,必须使用刷新令牌进行刷新。错误消息表明了这一点。您可以记录token
的值并在这里报告吗?
【讨论】:
我在描述中添加了更多信息。 您似乎遗漏了几个步骤。此文档zoho.com/crm/developer/docs/csharp-sdk/initialize.html 中概述的第一步应在 Postman 中执行。在开始编写任何 C# 代码之前获取访问令牌和刷新令牌。您可以将“self client”替换为“server client”。重定向 URL 也很重要,您在开发人员控制台中设置它,您需要在进一步的步骤中提供它,即使它的 localhost 我现在明白了。我在 API 控制台中生成了 Refresh 令牌,当我创建令牌对象时,第三个参数是“token”,我发送了刷新令牌 id,并将 TokenType 更改为“REFRESH”,现在它可以工作了。非常感谢。 不错!请注意,生成访问令牌有速率限制。您可以每 45 分钟执行一次,然后使用该令牌,而不是为每个请求生成一个。在您可能大量调用服务的情况下执行此操作,例如响应大量记录导入以上是关于如何使用 Zoho SDK 对基于服务器的应用程序进行身份验证?的主要内容,如果未能解决你的问题,请参考以下文章
基于 deluge 中的多选下拉菜单从 zoho creator 搜索记录
如何使用 php 代码将 ZOHO CRM 与 Zapier 连接?