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

How to authenticate Salesforce through CData ODBC driver via OAuth's accessToken?

我只能通过用户名和密码获取销售人员数据,如下所示。

cnxn = pyodbc.connect("DRIVER={CData ODBC Driver for Salesforce};User=myUser;Password=myPassword;Security Token=myToken;")

但是如果我不想在那里提供用户名和密码并且想使用从 Oauth 返回的 Accesstoken 访问数据。我该怎么做?

此处提供了使用 OAuth 和 CData ODBC 驱动程序连接到 Salesforce 的说明:http://cdn.cdata.com/help/RFE/odbc/pg_oauthcustomappcreate.htm(复制在下方)。

简而言之,您将使用 OAuth 访问令牌和 OAuth 服务器URL您的代码将类似于以下内容

cnxn = pyodbc.connect("DRIVER={CData ODBC Driver for Salesforce};OAuthAccessToken=OAUTH_ACCESS_TOKEN;OAuthServerUrl=OAUTH_SERVER_URL;")

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

要获取访问令牌,请设置以下连接属性:

  • OAuthClientId:在您的应用设置中设置为消费者密钥。
  • OAuthClientSecret:在您的应用设置中设置为消费者密码。
  • 回调URL:在您的应用设置中设置回调URL。

通过网络应用程序连接时,或者如果驱动程序无权打开浏览器window,您需要为访问令牌交换临时验证值:

  1. 调用 GetOAuthAuthorizationUrl。存储过程 returns URL 到 OAuth 端点。
  2. 登录并授权应用程序。您将被重定向回回调 URL。如果将 GrantType 参数设置为隐式,则回调 URL 在查询字符串参数中包含 OAuthAccessTokenOAuthServerUrl。如果将 GrantType 参数设置为代码,回调 URL 将在名为“code”的查询字符串参数中包含验证者代码。提取验证码并调用GetOAuthAccessToken。

相关部分:

要连接到数据,请设置以下连接属性:

  • OAuthAccessToken
  • OAuthServerUrl

要在访问令牌过期时自动刷新访问令牌,请将 InitiateOAuth 设置为 REFRESH 并设置 OAuthRefreshToken.或者,在访问令牌过期时调用 RefreshOAuthAccessToken 存储过程。给定一个刷新令牌作为输入,过程 returns 一个有效的 OAuth 访问令牌。

作为检索授权 URL 并让用户登录到 Salesforce 的替代方法,您可以通过调用 GetOAuthAccessToken 并将 GrantType 设置为 PASSWORD 来设置密码授予类型。在这里,您需要确保在连接字符串中设置了用户名和密码,以及应用程序的客户端 ID 和密码。请注意,必须将 InitiateOAuth 设置为 OFF 才能使密码授予类型起作用。您无法刷新通过这种方式获得的令牌。此方法的优点是为无法打开 Web 浏览器的用户删除了登录步骤,但缺点是用户的凭据在服务器和 Salesforce 之间以纯文本形式交换。

注意:您可以通过导航到“设置”>“管理设置”>“安全控制”>“会话设置”在 Salesforce 中配置会话超时。