我的应用程序有一个Django 3.1后端与django-allauth和dj-休息 (积极支持的叉子django-rest-auth)。
我的手机和网络前端已经可以通过REST登录使用Facebook和Google了。我现在正在尝试添加Salesforce作为第三种REST社交登录方法,但是遇到了一些问题。
https://www.mywebdomain.com/accounts/salesforce/login/callback/我一直在使用客户端JSforce来启动前面的Salesforce auth请求,但是如果其他方法更简单/更好/等等,我可以使用它们。
在我的客户端JS代码中运行jsforce.browser.login()将打开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我试图在后端调试和打印错误,但是auth_error.code和auth_error.exception都是空/空的。
我还尝试将access_token从该URL的散列发送到我的Salesforce端点(参见下面),但这导致了400个错误(“不正确的值”)。
下面是我如何在views.py中定义基于dj-休息-奥斯特的社会文件的views.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我的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社交软件在这个应用程序中工作?
发布于 2021-01-27 16:40:28
我想出了办法,并让它发挥作用:在我的dj-rest-auth Salesforce API端点上发布时,我只将access_token包含在我的POST正文中。我实际上需要access_token和key,其中key是Salesforce登录URL ("https://login.salesforce.com")。
它确实在django- Salesforce的荣誉指令中,但我误解了它的措辞。我现在知道它要求在POST主体中同时包含access_token和key。
https://stackoverflow.com/questions/65120473
复制相似问题