使用django-allauth实现LINE登录
Django-allauth的信息太少了!
特别是LINE的信息非常少。即使查看官方文件,也只有一些指向LINE开发者页面的链接。甚至不允许努力阅读英语。当然,因此我遇到了困难,所以我会记下需要注意的事项。
模块安装周边。
首先,让我们安装模块。我们需要安装Django和Django-allauth。
pip install django
pip install django-allauth
创建django项目
我们给创建的项目取名为“line”,登录的应用程序取名为“login”。
django-admin startproject line
django-admin startapp login
创建应用程序后,首先访问Django的起始页面。
python manage.py runserver

项目的设置等等
从这里开始,我们将开始实施Line登录。
settings.py 的设置
打开settings.py文件,并进行设置。
设置的内容如下:
-
- 作成したloginアプリケーションの登録
-
- django-allauth周りの設定
-
- login後、logout後のリダイレクトの設定
- 日本語化(いらないと思うけどねんのため)
(省略)
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites', #追加
'login', #追加
'allauth', #追加
'allauth.account', #追加
'allauth.socialaccount', #追加
'allauth.socialaccount.providers.line', #追加
]
(省略)
# Internationalization
# https://docs.djangoproject.com/en/2.2/topics/i18n/
LANGUAGE_CODE = 'ja-JP' #変更
TIME_ZONE = 'Asia/Tokyo' #変更
USE_I18N = True
USE_L10N = True
USE_TZ = True
(省略 ここから下は全部追加)
######################################
# Authentication #
######################################
# Don't forget this little dude.
SITE_ID = 1
# ログインのリダイレクトURL
LOGIN_REDIRECT_URL = '/'
# ログアウトのリダイレクトURL
ACCOUNT_LOGOUT_REDIRECT_URL = '/'
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
"allauth.account.auth_backends.AuthenticationBackend",
)
SOCIALACCOUNT_PROVIDERS = {
'line': {
'SCOPE': ['profile','openid'],
}
}
这里遇到的问题是,要进行Line登录,scope的设置非常重要,如果没有SOCIALACCOUNT_PROVIDERS的设置,它就无法正常工作。
添加URL
注册line项目的访问URL。
包含login应用程序和allauth的urls.py文件。
这样就可以访问两个应用程序的URL了。
from django.contrib import admin
from django.urls import include,path # includeを追加
urlpatterns = [
path('admin/', admin.site.urls),
path('auth/', include('allauth.urls')), # 追加
path('', include('login.urls')), # 追加
]
创建用于访问的页面
由于django-allauth已为登录提供了视图和模板,所以我们只需要访问它即可。然而,我们想要创建一个可用于确认登录的重定向页面,因此我们会自己来制作。
创建login/urls.py文件
因为startapp命令无法创建urls.py,所以您需要手动创建这个文件。
from django.urls import path
from . import views
# set the application namespace
# https://docs.djangoproject.com/en/2.0/intro/tutorial03/
app_name = 'login'
urlpatterns = [
# ex: /
path('', views.top, name='top'),
]
在login/views.py中的修改
由于views.py已经存在,因此我们将直接使用它。
from django.shortcuts import render
# Create your views here.
def top(request):
"""トップ画面"""
return render(request,
'top.html')
创建用于展示的模板。
在登录文件夹下创建一个名为templates的文件夹,并在其中创建一个名为top.html的文件。文件内容可以很简单,无妨。
<a href="{% url 'line_login' %}">lineでログイン</a>
{% if user.is_authenticated %}
<p>ログイン済</p>
<a href="{% url 'account_logout' %}">ログアウト</a>
{% endif %}
一般而言,首先在首页只有一个用于Line登录的链接。登录后会重定向到首页,首页会显示“已登录”字样,表明用户已通过身份验证,并显示注销链接。
创建数据库并创建超级用户
进行迁移,创建一个超级用户登录管理站点。
python manage.py makemigrations
python manage.py migrate
python manage.py create
python manage.py createsuperuser
ユーザー名 (leave blank to use '*****'):
メールアドレス:
Password:
Password (again):
创建LINE登录
让我们创建一个LINE登录。
首先,请访问下一页,并使用您的LINE帐户登录。
创建供应商
请继续登录,进入下一个页面后,请点击”创建新供应商”。


创建新频道


设置Web登录的重定向地址

到这一步,暂时可以说LINEDeveloper的设置结束了。
将LINE登录注册到Django的管理网站中。
走吧,就差最后一口气了。进入Django的管理网站,并访问外部账户的社交应用程序。

当您访问时,请选择右上方的椭圆形SOCIAL APPLICATION,并显示新应用选择画面。

请在”网站”栏中选择example.com,并点击箭头将选定的网站移动到相应位置(就像图片中所示的样子)。
立即访问!
现在一切准备就绪!首先运行runserver命令,在本地主机上搭建服务器。
python manage.py runserver


按下登录按钮后,将被回调到原始Web应用程序,并且会被转到设置为LOGIN_REDIRECT_URL路径(在这里是跳转到首页)。

我认为将显示首页,显示已登录状态和显示用于登出的链接。
結束了
我在django-allauth中成功实现了LINE登录功能,您可以尝试将其集成到您自己使用的WEB应用中。