【问题标题】:Use session_id from Salesforce to authenticate?使用 Salesforce 的 session_id 进行身份验证?
【发布时间】:2020-06-08 08:27:12
【问题描述】:

我希望能够从 Salesforce 对 Python 进行 api 调用,然后将一些数据异步上传回 Salesforce。因此,我需要以原始用户身份登录 Salesforce 来处理我的操作。比如SF调用了Python的api,然后我想用Python创建一个账号。

我在 Python 中使用 simple-salesforce。

我将来自 Salesforce 的 UserInfo.getSessionId() 中的 session_id 作为我的 api 调用中的标头传递给 Python,但随后我无法使用 simple-salesforce 作为原始用户。

我应该怎么做?

我尝试了以下方法,但总是收到无效的 session_id 错误。

from simple_salesforce import Salesforce    
Salesforce(instance_url="https://cs128.salesforce.com", session_id=session_id)
    Salesforce(instance_url="https://cs128.salesforce.com", session_id=session_id, domain='test')
    Salesforce(instance="test.salesforce.com", session_id=session_id, domain='test')
    Salesforce(instance="test.salesforce.com", session_id=session_id)

在我的测试中,用户拥有系统管理员的个人资料,并启用了 api。使用带有登录名/密码的用户,我可以成功登录到 Salesforce,所以这方面没有问题。

只是在寻找一种方法来使用来自 salesforce 的 session_id 来继续充当原始用户。

谢谢

【问题讨论】:

    标签: python oauth salesforce


    【解决方案1】:

    我建议将实例域和 session_id 都传递给您的 Python 应用程序。您使用我的域吗?如果是这样,您可能会在会话 ID 和域之间存在不匹配。您可以尝试使用您的 My Domain 网址 (something.my.salesforce.com) 而不是“cs128.salesforce.com”来进行检查。

    我怀疑 URL.getOrgDomainUrl() 可能是你的朋友。

    您是否尝试过使用 Visualforce 页面来输出会话 ID,仅用于测试?

    <apex:page >
        <dl style="font-size: 1.5rem">
            <dt>Session Id:</dt>
            <dd><code>{!$Api.Session_ID}</code></dd>
        </dl>
    </apex:page>
    

    我通常使用这样的东西:

    from simple_salesforce import Salesforce
    
    connection = Salesforce(
        instance="cs128.salesforce.com",
        session_id="00D60000000AbCd!AQUARGttOODucvVr2UcfSa4OB5KU_.zniNMrNMj361Sbr1ZIPKI7V6g_qNJBWJWFdsoO1Kf0ui5OYFw_jX0J1AFlyDL0sOnz",
        version="48.0"
    )
    

    (那个 session_id 不是真实的,但你的应该看起来很相似。)

    获取会话 ID 的另一种方法,至少用于测试:您的浏览器 cookie。具体来说,sid cookie。只需确保从 Python 调用的同一个域中提取它即可。

    希望这里有帮助!

    编辑:我已经在an article titled "Obtain Salesforce Session Id through Visualforce, Anonymous Apex, or Cookie Retrieval 中写了关于获取域和会话 ID 的三种方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-17
      • 1970-01-01
      • 1970-01-01
      • 2012-09-29
      • 1970-01-01
      • 2022-10-13
      • 1970-01-01
      相关资源
      最近更新 更多