
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Enable GitHub OAuth in Django
In many developer websites, we get to see GitHub social authentication which is very handy. In this article, we will see how to add Github Auth in our Django website.
Go to https://github.com/settings/developers/ and create an Oauth application and add these two URLs
http://127.0.0.1:8000/accounts/github/login/callback
Then, you will get a Client ID and a secret key. Now, let's move to the coding part.
Example
Install the django-allauth library −
pip install django-allauth
In settings.py add the following lines of code −
INSTALLED_APPS = [ ################## # # # # 'django.contrib.sites', 'allauth', 'allauth.account', 'allauth.socialaccount', 'allauth.socialaccount.providers.github', 'githubAuthentication' ] SITE_ID = 1 AUTHENTICATION_BACKENDS= [ 'django.contrib.auth.backends.ModelBackend', 'allauth.account.auth_backends.AuthenticationBackend' ] LOGIN_REDIRECT_URL="https://github.com"
n INSTALLED APPS, we added the import libraries we need and then we added GitHub default authentication backend. We also enabled a Redirect URL which will tell where to redirect on login.
In urls.py of project root −
from django.contrib import admin from django.urls import path,include urlpatterns = [ path('admin/', admin.site.urls), # this is module path copy this as it is path('accounts/', include('allauth.urls')), # this is my app path path('', include("githubAuthentication.urls")) ]
Here, we added the default path that is needed to add; it is allauth library path for enabling GitHub login. Second one is the app path that we made.
Now go to http://localhost:8000/admin and go to social application.
And, add an application −
Paste the client ID and secret key that you copied earlier and the name should be application name, choose provider github.
In sites section, click example.com and then click the arrow key and hit save. This will register github on your Django project as an authentication backend.
Now, create home.html in the templates folder and add the following lines −
<!DOCTYPE html> <html> <head> <title>tut</title> </head> <body> {% load socialaccount %} {% providers_media_js %} <a href="{% provider_login_url 'github' method='js_sdk' %}?n ext=https://github.com">login with github</a> </body> </html>
Here, we simply rendered the JS and loaded the allauth library on frontend. In <a> we provided the github login page on which we set up our default github login page.
In view.py −
from django.shortcuts import render # Create your views here. def home(request): return render(request,"home.html")
We rendered our frontend here
In urls.py (app urls) −
from django.urls import path,include from . import views urlpatterns = [ path('',views.home, name="Home" ), ]
We set up urls here and rendered our views.
Everything is done, now you can proceed to check the output.