我只能从用户名和密码中获取 salesforce 数据,如下所示。
cnxn = pyodbc.connect("DRIVER={CData ODBC Driver for Salesforce};User=myUser;Password=myPassword;Security Token=myToken;")
但是如果我不想在那里提供用户名和密码,并且想使用从 Oauth 返回的 Accesstoken 访问数据。我怎样才能做到这一点?
我只能从用户名和密码中获取 salesforce 数据,如下所示。
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 应用程序连接时,或者如果驱动程序无权打开浏览器窗口,您需要交换访问令牌的临时验证值:
要连接到数据,请设置以下连接属性:
要在访问令牌过期时自动刷新,请将InitiateOAuth设置为REFRESH并设置OAuthRefreshToken。或者,在访问令牌过期时调用 RefreshOAuthAccessToken 存储过程。给定一个刷新令牌作为输入,该过程返回一个有效的 OAuth 访问令牌。
作为检索授权 URL 并让用户登录 Salesforce 的替代方法,您可以通过调用 GetOAuthAccessToken 设置密码授予类型,将 GrantType 设置为 PASSWORD。在这里,除了应用程序的客户端 ID 和密码之外,您还需要确保在连接字符串中设置了用户名和密码。请注意,必须将 InitiateOAuth 设置为 OFF 才能使密码授予类型起作用。您无法刷新以这种方式获得的令牌。此方法的优点是为无法打开 Web 浏览器的用户删除了登录步骤,但缺点是用户的凭据在服务器和 Salesforce 之间以纯文本形式交换。
注意:您可以通过导航到设置 > 管理设置 > 安全控制 > 会话设置在 Salesforce 中配置会话超时。