簡體   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