Django Rest Auth的Facebook登录代码

13

在我的项目中,我使用django-rest-auth进行用户注册和认证。同时,我添加了Facebook登录的代码:

from allauth.socialaccount.providers.facebook.views import FacebookOAuth2Adapter
from rest_auth.registration.views import SocialLoginView

class FacebookOAuth2AdapterFixed(FacebookOAuth2Adapter):

    def __init__(self):
        pass


class FacebookLogin(SocialLoginView):
    adapter_class = FacebookOAuth2Adapter

在我的项目urls.py文件中,我添加了以下内容:

url(r'^rest-auth/facebook/$', FacebookLogin.as_view(), name='fb_login'),
但是在localhost:8000/rest-auth/facebook URL上,我看到一个包含2个参数(访问令牌[已经有了]和代码)的表单。 enter image description here 我的问题是:我是否可以在没有这个代码的情况下通过Facebook登录,如果不能,那么我如何在没有前端的情况下获取这个代码?我如何检查用户身份验证/注册是否有效? PS:SocialApp已创建,Facebook应用程序已创建,应用程序ID和应用程序秘密添加到社交应用程序中。

1
不论是使用代码还是访问令牌,你都无需“登录”。当用户被发送到Facebook登录对话框并从那里重定向回你的应用程序时,一个代码将作为GET参数传递给你的应用程序,然后你的应用程序需要去交换它以获取一个访问令牌。然后,该访问令牌可以用于发送API请求。至于为什么你有一个手动输入这些值的表单,我也不知道;但这并不是FB登录的一般工作方式。 - CBroe
1
你得到了你的问题的答案吗?我也有同样的困惑。 - Jadav Bheda
不,我没有得到这个问题的答案。 - Simple runner
2个回答

5
只需要填写“Access Token”或“Code”字段中的一个。(我没有测试过Code字段,但是Access Token字段有效,Code字段留空即可)
使用Access Token,在客户端使用Facebook javascript SDK进行“登录到Facebook”的步骤后,您将收到来自Facebook的响应,其中包括用于访问Facebook上数据的“accessToken”。只需将此accessToken粘贴到“Access Token”字段中,它将自动从Facebook检索数据并登录和/或创建用户帐户。
显然,您可以通过在javascript中将访问令牌发布到表单中来执行相同的过程。

0
在Access Token领域中,传递您从Facebook开发人员仪表板(生成和调试)获取的用户访问令牌,代码字段可以留空。它将在您的应用程序中创建用户,并返回带有用户详细信息的JWT令牌。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接