[英]How get GitHub username in django-allauth after authentication?
我将django-allauth
添加到Django项目中,并且可以在网站上使用GitHub进行身份验证。
经过用户身份验证后,我想获取GitHub用户名(已登录的用户)。
怎么做?
allauth
设置的用户名与从github返回的用户名不同,它是从函数generate_unique_username
返回的值(请参见其源代码) ,因此,您最好访问SocialAccount的extra_data字段,以下是显示如何访问它的示例视图。
from django.shortcuts import HttpResponse, render
from allauth.socialaccount.models import SocialAccount
def home(request):
if request.user.is_authenticated:
try:
social_account=SocialAccount.objects.get(user=request.user).extra_data
return HttpResponse(social_account['login'])
except SocialAccount.DoesNotExist: # user created with email and password
return HttpResponse(request.user.username)
return HttpResponse("<a href='/accounts/github/login/'>Sign Up</a>")
{% for account in user.socialaccount_set.all %}
<p>Username: <a target="_blank"
href="{{ account.extra_data.html_url }}">{{ account.extra_data.login }}</a>
</p>
{% endfor %}
extra_data.login
显示GitHub的登录名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.