0

我有一个 Web 应用程序,我想将 Salesforce 集成到该应用程序中。因此,当 OAuth2 授权从用户端发生时(他登录并允许我们的应用程序访问他的数据)。用户授予访问权限后,我将获得以下提到的参数。

access_token
refresh_token
instance_url
issued_at
signature
scope
token_type

使用上述参数,我应该使用 python3 通过 CData 通过 Salesforce API 获取数据。那么我如何通过 CData 做到这一点是我的问题。我希望直到这里我才有意义。我已经浏览了您发送的文件。我无法理解。你能详细说明一下吗?

我发现只有一个文件通过下面提到的 python 连接。它不包含关于使用访问令牌的内容。 http://cdn.cdata.com/help/RFE/odbc/pg_odbclangpythonconnect.htm

我浏览了与 Salesforce 相关的 CData 文档,但我不知道该怎么做。我不应该使用用户名、密码、客户端 ID、客户端密码。任何人都可以帮我解决这个问题。

4

1 回答 1

0

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


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

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

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

通过 Web 应用程序连接时,或者如果驱动程序未被授权打开浏览器窗口,则需要交换访问令牌的临时验证值:

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

相关部分:

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

  • OAuthAccessToken
  • OAuthServerUrl

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

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

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

于 2020-03-05T13:48:09.620 回答