首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用dj-rest-auth + django-allauth进行Salesforce登录时遇到麻烦

在使用dj-rest-auth + django-allauth进行Salesforce登录时遇到麻烦
EN

Stack Overflow用户
提问于 2020-12-03 05:38:57
回答 1查看 390关注 0票数 7

我的应用程序有一个Django 3.1后端与django-allauthdj-休息 (积极支持的叉子django-rest-auth)。

我的手机和网络前端已经可以通过REST登录使用Facebook和Google了。我现在正在尝试添加Salesforce作为第三种REST社交登录方法,但是遇到了一些问题。

我跟踪了django- Salesforce的荣誉指令

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

我一直在使用客户端JSforce来启动前面的Salesforce auth请求,但是如果其他方法更简单/更好/等等,我可以使用它们。

在我的客户端JS代码中运行jsforce.browser.login()将打开Salesforce登录弹出。输入Salesforce登录凭据后,Salesforce系统重定向到我定义的回调URL,从而生成一个显示以下文本的页面:

社会网络登录失败 试图通过您的社交网络帐户登录时出错。

该页地址栏中的URL如下所示:

代码语言:javascript
复制
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端点(参见下面),但这导致了400个错误(“不正确的值”)。

下面是我如何在views.py中定义基于dj-休息-奥斯特的社会文件的views.py

代码语言:javascript
复制
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:

代码语言:javascript
复制
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社交软件在这个应用程序中工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-27 16:40:28

我想出了办法,并让它发挥作用:在我的dj-rest-auth Salesforce API端点上发布时,我只将access_token包含在我的POST正文中。我实际上需要access_tokenkey,其中key是Salesforce登录URL ("https://login.salesforce.com")。

它确实在django- Salesforce的荣誉指令中,但我误解了它的措辞。我现在知道它要求在POST主体中同时包含access_tokenkey

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65120473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档