2014-09-04 88 views
1

我正在使用django all-auth軟件包允許用戶通過g + oauth2登錄。問題是,在服務器上,登錄導致它重定向到/ accounts/social/signup頁面,而不是直接登錄並返回到主頁。Django allauth重定向到註冊

下面是所需的代碼細節

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

你究竟試過了什麼?看起來你試圖通過g +創建一個新帳戶,然後你重定向到了sign_up。 在文檔中:#SOCIALACCOUNT_AUTO_SIGNUP = True #嘗試通過使用從社交帳戶提供者檢索的字段(例如用戶名,電子郵件)繞過註冊表單。如果由於重複的電子郵件地址而發生衝突,註冊表格仍然會啓動。 您是否有更多信息來查看設置有問題? – abrunet 2014-09-04 14:08:24

+0

@abrunet我不需要任何附加信息,因此不需要註冊表單。直到現在它一直工作得很好,自動創建一個用戶並登錄。而這正是我想要的。但是,我不知道我做了什麼來搞砸這件事。 – darkryder 2014-09-04 14:10:51

+0

難道你沒有什麼可以跟隨你的代碼中的變化嗎? :/如果你沒有登錄,可能會失敗。帳戶是否已創建?你可以檢查谷歌是否已經看到了請求,並將其添加到允許的應用程序等。你最近做過一些包升級嗎? – abrunet 2014-09-04 14:14:13

回答

1

我用我的電子郵件ID,我試圖通過爲電子郵件ID登錄管理網站的超級用戶。由於電子郵件不是唯一的,這導致衝突。我只是改變了我的超級用戶的電子郵件。

+0

)如果你沒有在用戶對象中提到的電子郵件,請嘗試allauth的「電子郵件地址」。 – Lucas03 2016-11-29 15:24:16