Zoho CRM API:Python 基于请求 POST 或 GET 身份验证 + 插入联系人
Zoho CRM API: Python request-based POST or GET authentication + insertion of contacts
任务##
一个允许用户注册的 django 应用程序,一旦用户点击帐户激活 link,Zoho CRM 就会接收数据并在 CRM 部分创建一个联系人。
问题
我目前正在开发一款绝对的杰作 - ZOHO API。
我正在努力设置使用 POST/GET 请求的本机 Python 代码。
关于zcrmsdk 3.0.0,除非有人能提供一个功能齐全的例子,否则我已经完全放弃了这个解决方案。支持只是指责我的代码。
我查阅的文档:
https://www.zoho.com/crm/developer/docs/api/v2/access-refresh.html,
https://www.zoho.com/crm/developer/docs/api/v2/insert-records.html
由于 postman API 中的 post 请求工作正常 我不明白为什么它在 python code
中不起作用
我的方法
- 生成自客户端 API 代码:https://api-console.zoho.com/
- 在 Postman 上插入该代码并检索访问或刷新令牌
- 在文档中定义的 add_user_contact 函数中使用此访问令牌
有用!响应成功并且在 Zoho CRM 中
我使用的权限范围是:ZohoCRM.modules.contacts.ALL、ZohoCRM.users.ALL、ZohoCRM.modules.deals.ALL、ZohoCRM.modules.attachments.ALL、ZohoCRM.settings.ALL、AAAserver.profile.ALL
Post 人的图片 POST 请求
我自己的代码
def authenticate_crm():
"""
access to response object id:
response_object.get('data')[0].get('details').get('id')
"""
url = 'https://accounts.zoho.com/oauth/v2/token'
headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}
# one time self-client token here -
request_body = {
"code": "1000.aa8abec144835ab79b8f9141fa1fb170.8ab194e4e668b8452847c7080c2dd479",
"redirect_uri": "http://example.com/yourcallback",
"client_id": "1000.H95VDM1H9KCXIADGF05E0E1XSVZKFQ",
"client_secret": "290e505ec52685fa62a640d874e6560f2fc8632e97",
" grant_type": "authorization_code"
}
response = requests.post(url=url, headers=headers, data=json.dumps(request_body).encode('utf-8'))
if response is not None:
print("HTTP Status Code : " + str(response.status_code))
print(response.json())
我基本上是在努力将 Postman API 请求转换为 Python 请求以获取令牌作为工作流程的一部分。我在这里做错了什么?
文档指出:注意:出于安全原因,请在请求正文中将以下参数作为表单数据传递。 (access-refresh link) 但将其作为表单数据传递给 postman 会完全中断调用。
根据他们自己的文档(令人费解、矛盾且充满了过时的屏幕截图),身份验证密钥只需要一次。
一旦上面的请求运行,我会在第三张图片中获取响应并使用刷新键添加联系人。
如果有人可以提供帮助,我也愿意接受 SDK 3.0.0 的解决方案。
我解决了!
我已经更改了这一行:
response = requests.post(url=url, headers=headers, data=json.dumps(request_body).encode('utf-8'))
为此添加了一些 return 语句:
payload = '1000.6d9411488dcac999f02304d1f7843ab2.e14190ee4bae175debf00d2f87143b19&' \
'redirect_uri=http%3A%2F%2Fexample.com%2Fyourcallback&' \
'client_id=1000.H95VDM1H9KCXIADGF05E0E1XSVZKFQ&' \
'client_secret=290e505ec52685fa62a640d874e6560f2fc8632e97&'\
'grant_type=authorization_code'
response = requests.request(method="POST", url=url, headers=headers, data=payload)
if response is not None:
print("HTTP Status Code : " + str(response.status_code))
# print(response.text)
print(response.json())
# catch access and refresh token
at = response.json().get('access_token')
rt = response.json().get('refresh_token')
return at, rt
我不明白为什么会有所不同,但可以解决问题,我可以从 ZOHO 检索密钥。
任务##
一个允许用户注册的 django 应用程序,一旦用户点击帐户激活 link,Zoho CRM 就会接收数据并在 CRM 部分创建一个联系人。
问题
我目前正在开发一款绝对的杰作 - ZOHO API。 我正在努力设置使用 POST/GET 请求的本机 Python 代码。 关于zcrmsdk 3.0.0,除非有人能提供一个功能齐全的例子,否则我已经完全放弃了这个解决方案。支持只是指责我的代码。
我查阅的文档: https://www.zoho.com/crm/developer/docs/api/v2/access-refresh.html, https://www.zoho.com/crm/developer/docs/api/v2/insert-records.html
由于 postman API 中的 post 请求工作正常 我不明白为什么它在 python code
中不起作用我的方法
- 生成自客户端 API 代码:https://api-console.zoho.com/
- 在 Postman 上插入该代码并检索访问或刷新令牌
- 在文档中定义的 add_user_contact 函数中使用此访问令牌 有用!响应成功并且在 Zoho CRM 中
我使用的权限范围是:ZohoCRM.modules.contacts.ALL、ZohoCRM.users.ALL、ZohoCRM.modules.deals.ALL、ZohoCRM.modules.attachments.ALL、ZohoCRM.settings.ALL、AAAserver.profile.ALL
Post 人的图片 POST 请求
我自己的代码
def authenticate_crm():
"""
access to response object id:
response_object.get('data')[0].get('details').get('id')
"""
url = 'https://accounts.zoho.com/oauth/v2/token'
headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}
# one time self-client token here -
request_body = {
"code": "1000.aa8abec144835ab79b8f9141fa1fb170.8ab194e4e668b8452847c7080c2dd479",
"redirect_uri": "http://example.com/yourcallback",
"client_id": "1000.H95VDM1H9KCXIADGF05E0E1XSVZKFQ",
"client_secret": "290e505ec52685fa62a640d874e6560f2fc8632e97",
" grant_type": "authorization_code"
}
response = requests.post(url=url, headers=headers, data=json.dumps(request_body).encode('utf-8'))
if response is not None:
print("HTTP Status Code : " + str(response.status_code))
print(response.json())
我基本上是在努力将 Postman API 请求转换为 Python 请求以获取令牌作为工作流程的一部分。我在这里做错了什么?
文档指出:注意:出于安全原因,请在请求正文中将以下参数作为表单数据传递。 (access-refresh link) 但将其作为表单数据传递给 postman 会完全中断调用。
根据他们自己的文档(令人费解、矛盾且充满了过时的屏幕截图),身份验证密钥只需要一次。 一旦上面的请求运行,我会在第三张图片中获取响应并使用刷新键添加联系人。 如果有人可以提供帮助,我也愿意接受 SDK 3.0.0 的解决方案。
我解决了!
我已经更改了这一行:
response = requests.post(url=url, headers=headers, data=json.dumps(request_body).encode('utf-8'))
为此添加了一些 return 语句:
payload = '1000.6d9411488dcac999f02304d1f7843ab2.e14190ee4bae175debf00d2f87143b19&' \
'redirect_uri=http%3A%2F%2Fexample.com%2Fyourcallback&' \
'client_id=1000.H95VDM1H9KCXIADGF05E0E1XSVZKFQ&' \
'client_secret=290e505ec52685fa62a640d874e6560f2fc8632e97&'\
'grant_type=authorization_code'
response = requests.request(method="POST", url=url, headers=headers, data=payload)
if response is not None:
print("HTTP Status Code : " + str(response.status_code))
# print(response.text)
print(response.json())
# catch access and refresh token
at = response.json().get('access_token')
rt = response.json().get('refresh_token')
return at, rt
我不明白为什么会有所不同,但可以解决问题,我可以从 ZOHO 检索密钥。