gpt4 book ai didi

django - 无法使用 dj-rest-auth + django-allauth 登录 Salesforce

转载 作者:行者123 更新时间:2023-12-03 09:40:33 31 4
gpt4 key购买 nike

我的应用程序有一个带有 django-allauth 的 Django 3.1 后端和 dj-rest-auth (积极支持 django-rest-auth 的 fork )。
我的移动和 Web 前端已经可以通过 REST 使用 Facebook 和 Google 登录。我现在正在尝试将 Salesforce 添加为第 3 种 REST 社交登录方法,但遇到了问题。
我关注了 django-allauth instructions for Salesforce :

  • 创建了一个带有 id 和 openid 范围(以及其他一些)的 Salesforce Connected 应用程序,并将回调 URL 设置为 https://www.mywebdomain.com/accounts/salesforce/login/callback/
  • 在 Django 中创建了一个 SocialApplication,在“ key ”字段中使用客户端 ID、密码和登录 URL ( https://login.salesforce.com/ )
  • 在 INSTALLED_APPS 中包含 allauth.socialaccount.providers.salesforce

  • 我一直在使用客户端 JSforce在前端启动 Salesforce 身份验证请求,但如果其他方法更简单/更好/等,我愿意接受其他方法。
    运行 jsforce.browser.login()在我客户的 JS 代码中打开 Salesforce 登录弹出窗口。输入 Salesforce 登录凭据后,Salesforce 系统重定向到我定义的回调 URL,从而生成一个显示以下文本的页面:

    Social Network Login Failure
    An error occurred while attempting to login via your social network account.


    该页面地址栏中的 URL 如下所示:
    https://www.mywebdomain.com/accounts/salesforce/login/callback/#access_token=00D3t000004QWRm%21ARwAQPfHWiM6jdB43dlyW6qjEw._34mjzGi_Jv6YCXp0QssT.9F9lCge5_YaH8gqTy3Od6SywCs8X9zOGv145SyviBVeGdn0&instance_url=https%3A%2F%2Fna123.salesforce.com&id=https%3A%2F%2Flogin.salesforce.com%2Fid%2F00D3t000004QWRmEAO%2F0053t000008QBetAAG&issued_at=1606802917608&signature=KvxAX0WBCFQYY%2BO25id9%2FXxpbh2q2d2vWdQ%2FFV5FCBw%3D&state=jsforce0.popup.c0ockgct29g&scope=id+api+web+refresh_token+openid&token_type=Bearer
    我试图在我的后端调试和打印错误,但都是 auth_error.codeauth_error.exception是空白/空的。
    我也尝试发送 access_token从该 URL 的哈希到我的 Salesforce API 端点(见下文),但这导致了 400 错误(“不正确的值”)。
    这是我如何定义我的 SocialLoginView s 在我的 views.py 中,基于 dj-rest-auth's social auth documentation :
    from dj_rest_auth.registration.views import SocialLoginView
    from allauth.socialaccount.providers.facebook.views import FacebookOAuth2Adapter
    from allauth.socialaccount.providers.google.views import GoogleOAuth2Adapter
    from allauth.socialaccount.providers.salesforce.views import SalesforceOAuth2Adapter


    class FacebookLogin(SocialLoginView):
    adapter_class = FacebookOAuth2Adapter


    class GoogleLogin(SocialLoginView):
    adapter_class = GoogleOAuth2Adapter


    class SalesforceLogin(SocialLoginView):
    adapter_class = SalesforceOAuth2Adapter
    我的 urls.py:
    from .views import FacebookLogin, GoogleLogin, SalesforceLogin

    urlpatterns = [
    ...
    # Sending access_token to the Facebook and Google REST endpoints works,
    # but doing the same for the Salesforce REST endpoint does not (400 error: "Incorrect value")
    url(r'^api/rest-auth/facebook/$', FacebookLogin.as_view(), name='fb_login'),
    url(r'^api/rest-auth/google/$', GoogleLogin.as_view(), name='google_login'),
    url(r'^api/rest-auth/salesforce/$', SalesforceLogin.as_view(), name='salesforce_login'),
    ...
    ]
    如何在此应用程序中使用 Salesforce 社交身份验证?

    最佳答案

    我想通了并让它工作了:当发布到我的 dj-rest-auth Salesforce API 端点时,我只包含了 access_token在我的 POST 正文中。我实际上需要两个 access_tokenkey ,其中 key是 Salesforce 登录 URL ( "https://login.salesforce.com" )。
    确实是在django-allauth instructions for Salesforce ,但我误解了措辞。我现在知道它说同时需要 access_tokenkey在 POST 正文中。

    关于django - 无法使用 dj-rest-auth + django-allauth 登录 Salesforce,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65120473/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com