如何通过OAuth通过CData ODBC驱动程序对Salesforce进行身份验证



我已经为Salesforce安装了CData ODBC驱动程序,并且能够通过用户名、密码和安全令牌连接Salesforce。我也想通过OAuth访问。我已经完成了下面链接中提到的所有步骤。我们怎样才能走得更远。

http://cdn.cdata.com/help/RFE/odbc/pg_oauth.htm

这是我的代码,通过用户名、密码和Security Token连接Salesforce,并能够将数据保存在csv文件中。如何通过OAuth进行同样的操作?

import pyodbc
import csv
cnxn = pyodbc.connect("DRIVER={CData ODBC Driver for Salesforce};User=yourusername;Password=password;Security Token=security token;")
cursor = cnxn.cursor()
query = "SELECT * from AccountPartner"
cursor.execute(query)
csvfile=open('persons.csv','w', newline='')
obj=csv.writer(csvfile)
for row in cursor:
print(row)
obj.writerow(row)
csvfile.close()

您需要的说明在文档中(也复制到下面(:http://cdn.cdata.com/help/RFE/odbc/pg_oauthcustomappcreate.htm

您需要在Salesforce中创建自定义应用程序,然后在连接字符串中设置规定的与OAuth相关的连接属性。创建连接的代码如下所示:

cnxn = pyodbc.connect("DRIVER={CData ODBC Driver for Salesforce};OAuthClientID=MY_CONSUMER_KEY;OAuthClientSecret=MY_CONSUMER_SECRET;OAuthCallbackURL=https://localhost:33333;InitiateOAuth=GETANDREFRESH;")

您可能需要先测试连接并在Python之外触发OAuth流。该过程的说明可以在"帮助"的Unix ODBC部分找到(http://cdn.cdata.com/help/RFE/odbc/pg_unixODBConlinux.htm)但也在下面复制。


从文档复制的说明

创建连接的应用程序

获取OAuth客户端凭据、使用者密钥和使用者秘密:

  1. 登录Salesforce.com
  2. 在"设置"中,在"快速查找"框中输入"应用程序",然后单击链接创建应用程序
  3. 在结果页面的"已连接的应用程序"部分,单击"新建"。输入用户登录以授予您的应用程序权限时要显示的名称,以及联系人电子邮件地址
  4. 单击启用OAuth设置,然后在回调URL框中输入一个值。如果您正在制作桌面应用程序,请将回调URL设置为http://localhost:33333或者您选择的其他端口号。如果您正在制作web应用程序,请将回调URL设置为您的web应用程序上的一个页面,您希望用户在授权您的应用程序后返回该页面
  5. 选择应用程序应向用户请求的权限范围
  6. 单击你的应用程序名称打开一个包含应用程序信息的页面。将显示OAuth客户端凭据、使用者密钥和使用者机密

从桌面应用程序向Salesforce进行身份验证

设置以下连接属性后,即可进行连接:

  • OAuthClientId:在应用程序设置中设置为使用者密钥
  • OAuthClientSecret:在应用程序设置中设置为使用者机密
  • 回调URL:设置为应用程序设置中的回调URL
  • InitiateOAuth:设置为GETANDRREFRESH。您可以使用InitiateOAuth来避免重复OAuth交换和手动设置OAuthAccessToken连接属性

连接时,驱动程序会在默认浏览器中打开OAuth端点。登录并授予应用程序权限。然后,驱动程序完成以下OAuth过程:

  1. 获取回调URL并设置访问令牌和OAuthServerUrl以验证请求
  2. 将OAuth值保存在OAuthSettingsLocation中,以便在连接之间持久化
  3. 将返回的刷新令牌交换为新的有效访问令牌

使用unixODBC

定义DSN

通过向odbc.ini.odbc.ini添加条目来创建DSN。以下是DSN条目示例:

[CData Salesforce Source]
Driver=/opt/cdata/cdata-odbc-driver-for-salesforce/lib/libsalesforceodbc.x64.so
OAuthClientID=MY_CONSUMER_KEY
OAuthClientSecret=MY_CONSUMER_SECRET
OAuthCallbackURL=https://localhost:33333
InitiateOAuth=GETANDREFRESH

测试连接

您可以使用unixODBC测试工具isql从命令行执行对Salesforce的SQL查询。测试连接时,使用-v标志从驱动程序管理器和驱动程序输出任何消息。

isql -v "CData Salesforce Source"

在此处输入代码在连接字符串中进行如下更改

cnxn = pyodbc.connect("DRIVER={CData ODBC DRIVER for
Salesforce};InitiateOAuth='GETANDREFRESH';OAuthClientId='myclient_id';OAuthClientSecret='my_secret';callbackurl='my_redirect_uri';oauthaccesstoken='my_access_token';oauthserverurl='server_url_returned_in_oauth';OAuthRefreshToken='refresh_token';")

相关内容

  • 没有找到相关文章

最新更新