我使用django all-auth软件包允许人们通过g + oauth2登录。问题是,在服务器上,登录会导致它重定向到/ accounts / social / signup页面,而不是直接登录并返回主页。
这里是必需的代码详情
settings.py
LOGIN_URL = '/accounts/google/login/'
LOGIN_REDIRECT_URL = '/'
SOCIALACCOUNT_QUERY_EMAIL = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_EMAIL_REQUIRED = True
SOCIALACCOUNT_PROVIDERS = {
'google': {
'SCOPE': [
'https://www.googleapis.com/auth/userinfo.email',
'https://www.googleapis.com/auth/userinfo.profile',
'https://www.googleapis.com/auth/plus.login',
'https://www.googleapis.com/auth/plus.me'
],
'AUTH_PARAMS': {'access_type': 'online'}
}
}
SOCIALACCOUNT_ADAPTER = 'lostndfound.views.LoginAdapter'
lostndfound.views
class LoginAdapter(DefaultSocialAccountAdapter):
def pre_social_login(self, request, sociallogin):
user = sociallogin.account.user
if user.email.split('@')[-1] not in settings.ALLOWED_LOGIN_HOSTS:
messages.error(request, "You can login only through an *** account.")
raise ImmediateHttpResponse(HttpResponseRedirect(reverse('home')))
答案 0 :(得分:1)
我曾使用我尝试登录的电子邮件ID作为管理站点超级用户的电子邮件ID。这导致了冲突,因为电子邮件不是唯一的。我只是更改了超级用户的电子邮件。
答案 1 :(得分:0)
确保您以前尝试通过google登录的电子邮件ID已以其他任何方式存储在数据库中。如果有,请删除它,然后再试一次。