【问题标题】:How to access Salesforce data through CData ODBC driver using python with using Salesforce Access Token of the user from OAuth autherization?如何使用来自 OAuth autherization 的用户的 Salesforce 访问令牌使用 python 通过 CData ODBC 驱动程序访问 Salesforce 数据?
【发布时间】:2020-03-05 08:22:29
【问题描述】:

我有一个 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、客户端密码。谁能帮帮我。

【问题讨论】:

    标签: python salesforce odbc pyodbc cdata-drivers


    【解决方案1】:

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


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

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

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

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

    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 中配置会话超时。

    【讨论】:

      猜你喜欢
      • 2016-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多