sun*_*unw 7 django salesforce django-allauth django-rest-auth jsforce
我的应用程序有一个 Django 3.1 后端,带有django-allauth和dj-rest-auth(积极支持django-rest-auth 的分支)。
我的移动和 Web 前端已经可以通过 REST 使用 Facebook 和 Google 登录。我现在正在尝试将 Salesforce 添加为第 3 种 REST 社交登录方法,但遇到了问题。
我已按照Salesforce的django-allauth 说明进行操作:
https://www.mywebdomain.com/accounts/salesforce/login/callback/我一直在使用客户端JSforce在前端启动 Salesforce 身份验证请求,但如果其他方法更简单/更好/等,我愿意接受其他方法。
jsforce.browser.login()在我客户的 JS 代码中运行会打开 Salesforce 登录弹出窗口。输入 Salesforce 登录凭据后,Salesforce 系统重定向到我定义的回调 URL,从而生成一个显示以下文本的页面:
社交网络登录失败
尝试通过您的社交网络帐户登录时发生错误。
该页面地址栏中的 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
Run Code Online (Sandbox Code Playgroud)
我试图调试,并在我的后台打印错误,但两者auth_error.code并auth_error.exception为空/空。
我还尝试将access_token来自该 URL 的哈希值发送到我的 Salesforce API 端点(见下文),但这导致了 400 错误(“不正确的值”)。
以下是我如何SocialLoginView根据dj-rest-auth 的社交身份验证文档在我的 views.py 中定义我的s :
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
Run Code Online (Sandbox Code Playgroud)
我的 urls.py:
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
Run Code Online (Sandbox Code Playgroud)
如何在此应用程序中使用 Salesforce 社交身份验证?
我想通了并让它工作:当发布到我的 dj-rest-auth Salesforce API 端点时,我只包含access_token在我的 POST 正文中。我实际上需要 和access_token,key其中keySalesforce 登录 URL ( "https://login.salesforce.com")。
这确实是在Salesforce 的 django-allauth 说明中,但我误解了措辞。我现在知道它说需要在 POST 正文中同时使用access_token和。key