繁体   English   中英

认证后如何在django-allauth中获取GitHub用户名?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM