Facebook使用django allauth tastypie注册

时间:2015-02-15 13:01:53

标签: django facebook tastypie django-allauth

我正在开发一款允许用户通过Facebook注册的移动应用。从FB收到访问令牌后,我将其发送到Django后端。

我正在使用tastypie和django-allauth。

如何使用django-allauth使用访问令牌创建新用户/社交帐户?

我使用此代码登录已经注册的FB帐户,但是当我尝试使用它注册时,会出现一个错误:

  

' AnonymousUser'对象没有属性'电子邮件'

def facebook_login(self, request, **kwargs):
        self.method_check(request, allowed=['post'])

        data = self.deserialize(request, request.body, format=request.META.get('CONTENT_TYPE', 'applicaton/json'))

        if "access_token" not in request.body:
            data = {"message": 'missing access token'}
            return self.error_response(request, data, response_class=http.HttpBadRequest)

        access_token = data.get('access_token', '')

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

            login = fb_complete_login(app, token)
            login.token = token
            login.state = SocialLogin.state_from_request(request)
            ret = complete_social_login(request, login)

            #if we get here we've succeeded
            return self.create_response(request, {
                'email': request.user.email,
                'api_key': request.user.api_key.key
                }, HttpAccepted)

        except Exception as ex:
            data = {"message": ex}
            return self.error_response(request, data, response_class=http.HttpBadRequest)

1 个答案:

答案 0 :(得分:0)

此代码实际上有效,问题是设置了SOCIALACCOUNT_AUTO_SIGNUP = false并导致错误。