使用 Django Allauth 注册 Facebook 用户

Registration Facebook user with Django Allauth

我尝试使用 Django AllAuth 通过 Facebook 注册用户。

我必须做一个 REST API 所以我会使用 Django REST Framework。

我发现第一个用户注册很简单tutorial,但可能与当前的实现有些不同:

我试过这段代码:

def post(self, request):
        data = JSONParser().parse(request)
        access_token = data.get('access_token', '')

        try:
            app = SocialApp.objects.get(provider="facebook")
            token = SocialToken(app=app, token=access_token)

            # check token against facebook
            login = fb_complete_login(app, token)
            login.token = token
            login.state = SocialLogin.state_from_request(request)

            # add or update the user into users table
            ret = complete_social_login(request, login)

            # if we get here we've succeeded
            return Response(status=200, data={
                'success': True,
                'username': request.user.username,
                'user_id': request.user.pk,
            })

        except:

            traceback.print_exc()
            return Response(status=401, data={
                'success': False,
                'reason': "Bad Access Token",
            })

但现在我看到 fb_complete_login 有 3 个参数:requestapptoken

所以,我也尝试像这个函数参数一样输入请求,但几行之后我在 login = fb_complete_login(app, token).

上出错

TypeError: add_message() argument must be an HttpRequest object, not 'Request'.

欢迎提出任何建议!

此处给出的解决方案:http://tech.agilitynerd.com/django-rest-registration-with-django-rest-auth.html

要仅针对 allauth 禁用消息传递,请覆盖适配器(例如在 main.adapters 中):

from allauth.account.adapter import DefaultAccountAdapter

class MessageFreeAdapter(DefaultAccountAdapter):
    def add_message(self, request, level, message_template,
                        message_context=None, extra_tags=''):
        pass

然后在 settings.py 中添加:

ACCOUNT_ADAPTER = 'main.adapters.MessageFreeAdapter'