我正在开发一款允许用户通过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)
答案 0 :(得分:0)
此代码实际上有效,问题是设置了SOCIALACCOUNT_AUTO_SIGNUP = false并导致错误。