如何在django中进行社交媒体身份验证

问题描述 投票:1回答:1

我希望用户能够通过linkedin在我的网站上注册,并将其重定向到包含其用户名实例的页面。例如,重定向网址将包含其用户名http://127.0.0.1:8000/the_username_from_linkedin_profile

这是我希望用户在使用linkedin注册后重定向到的URL。

path(r'<str:username>/', views.dashboard, name='dashboard'),

这是仪表板视图。

@login_required
def dashboard(request, username):
    """Dashboard page for user"""

    if request.user.username != username:
        return redirect(reverse(
        'accounts:dashboard',
        args=(request.user.username,))
    )
    return render(request, 'accounts/dashboard.html')

这是具有用于向linkedin注册的按钮的模板。

<form id="registrationForm" class='white-popup-block mfp-hide' method='post' action="{% url 'accounts:register'%}">
    <div id="reg-errors"></div>
    <div class="form-group">
    {% csrf_token %}

{{ reg_form.fullname|add_class:'form-control input-upper my-3' }}
{{ reg_form.username|add_class:'form-control input-upper my-3' }}
{{ reg_form.email|add_class:'form-control input-upper my-3' }}
{{ reg_form.organization|add_class:'form-control input-upper my-3' }}
{{ reg_form.password1|add_class:'form-control input-upper my-3' }}
{{ reg_form.password2|add_class:'form-control input-upper my-3' }}
<small style="color:black" class="text-already"><b>By registering you agree to our</b><a href="{% url 'tos' %}"> terms and conditions</a></small>
<div class='text-center'>
  <img src='/static/images/loader.gif' id='regLoader' class='d-none' />
</div>
<div id="regSection">
  <button type="submit" class="btn btn-primary btn-block btn-signup-form">
    <i class="fa fa-user-plus fa-2x ml-10" aria-hidden="true"></i>
    SIGN UP
  </button>
  <a href="{% url 'social:begin' 'linkedin-oauth2' %}?next={{ next }}" class='btn btn-primary btn-block btn-sign-linkedin'> <i class="fab fa-linkedin-in"></i>  &nbsp; &nbsp;Register with Linkedin</i></a>
  {% comment %} <a href="{% url 'social:begin' 'linkedin-oauth2' %}?next={{ next }}" class='btn btn-primary btn-block btn-sign-linkedin'> <i class="fab fa-linkedin-in"></i>  &nbsp; &nbsp;Register with Linkedin</i></a> {% endcomment %}
  <p style="color:black" class="text-already d-none d-md-block"><b>Already have an account? </b><a id='sidebarCollapse1' href="#" >LOGIN</a></p>
  <p style="color:black" class="text-already d-md-none"><b>Already have an account? </b><a id='loginRedirect' href="#loginForm" >LOGIN</a></p>
</div>

django python-social-auth
1个回答
1
投票

您还可以在django中使用allauth包,它为您提供了非常灵活的方式来实现社交媒体身份验证。如facebookgoogletwitter等。

here查找文档

© www.soinside.com 2019 - 2024. All rights reserved.