我的確看到了一些類似的問題,但他們似乎並沒有回答我遇到的問題。在django allauth中,我如何從OpenId登錄/ Google獲取用戶名?
到目前爲止,我一直在做manage.py runserver
,在本地運行。
一開始我嘗試只是把這個在我的settings.py:
import allauth
ACCOUNT_EMAIL_REQUIRED = True
然後試圖將其擴展到:
import allauth
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_AUTHENTICATION_METHOD = "username_email"
ACCOUNT_USERNAME_REQUIRED = True
SOCIALACCOUNT_AUTO_SIGNUP = True
但是當我試圖用我的谷歌帳戶登錄(即,在openId-googlem下不是直的谷歌),我可以看到它得到我的電子郵件,但它不使用我的電子郵件。在回調函數中,我試圖在一堆打印報表的堅持,它看上去像它拉這從返回URL時,我打印user.__dict__
:
{'_state': <django.db.models.base.ModelState object at 0x101604dd0>,
'date_joined': datetime.datetime(2012, 12, 3, 4, 35, 41, 949526, tzinfo=<UTC>),
'email': u'[email protected]',
'first_name': '',
'id': None,
'is_active': True,
'is_staff': False,
'is_superuser': False,
'last_login': datetime.datetime(2012, 12, 3, 4, 35, 41, 949506, tzinfo=<UTC>),
'last_name': '',
'password': '',
'username': ''}
也就是說,它填充電子郵件字段,而不是username
字段。我認爲默認情況下,allauth會將username
填入CORRECT_USERNAME
,但它看起來是空的。 然後,當我打印出該帳戶時,我在user_id
字段中看不到任何內容。
當我跳到配置文件頁面時,它將username
列爲「用戶」,看起來像是絕對回退/默認設置。也就是說,這樣的:
{% user_display user %}
<p>Another try... <br />
{{user.username}}
<p>---------------------------</p>
{{ user.account_provider }}
<p>---------------------------</p>
{{ user.get_provider }}
<p>---------------------------</p>
給了我這樣的:
user
Another try...
user
---------------------------
---------------------------
---------------------------
我沒有看到在runserver控制檯的任何錯誤。
還有什麼我需要添加到settings.py? 我需要寫一些回調函數來將用戶名從電子郵件字段中提取出來嗎?
我使用Python 2.6.1(雪豹),如果這有什麼區別。
在此先感謝!
您正在使用哪個版本的django-allauth?另外,自從12月12日你問這個問題以來,至少已經發布了12個版本的django-allauth,你所描述的問題可能已經得到解決...... – tutuDajuju
你是否找到了解決方案? – Carlos