【问题标题】:How get GitHub username in django-allauth after authentication?身份验证后如何在 django-allauth 中获取 GitHub 用户名?
【发布时间】:2020-01-05 00:46:40
【问题描述】:

我在 Django 项目中添加了django-allauth,我可以在网站上使用 GitHub 进行身份验证。
用户认证后,我想获取GitHub用户名(登录的用户)。
怎么做?

【问题讨论】:

    标签: python django python-3.x github django-allauth


    【解决方案1】:

    allauth 设置的用户名与 github 返回的用户名不同,它是函数 generate_unique_username 返回的值,请参见 sourcecode,因此您应该更好地访问 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>")
    

    【讨论】:

      【解决方案2】:
      {% 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 的登录信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-01
        • 2020-03-21
        • 1970-01-01
        • 1970-01-01
        • 2017-07-16
        • 2011-06-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多