pythonでfacebookソーシャルログインの開発(準備)

プログラミング
この記事は約7分で読めます。
記事内に広告が含まれます。

前回php(laravel)環境でソーシャルログイン関連の記事を掲載しましたが、
今回はpython(Django)での方法です。
facebookの作業は同じになりますのでfacebookの部分は省きます。
単に開発中のサイトを外部に公開する方法として書きます。

スポンサーリンク

python3仮想環境の作成

python3系がインストールされているものとして進めます。

まず環境を作成します。
●環境名は[social_test_env]

% python3 -m venv social_test_env
% cd social_test_env
% source bin/activate
% pip install --upgrade pip

Djangoの導入

Djangoのインストールとプロジェクトの作成。
●プロジェクト名は[social_test]

% pip install django
% django-admin startproject social_test
% cd social_test

一般サイトページ用のアプリ作成

% python manage.py startapp site_app

動作の設定

ここからコーディングです。

環境の設定

% vi social_test/settings.py

...
ALLOWED_HOSTS = ['*']  ←変更 '*'は外部からの接続をすべて許可
...
INSTALLED_APPS = [
    ...    
    'django.contrib.staticfiles',
    'site_app',   ←追加
]
...
LANGUAGE_CODE = 'ja'   ←変更

TIME_ZONE = 'Asia/Tokyo'   ←変更
...

プロジェクトルーティング作成

% vi social_test/urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('site_app.urls')),
]

site_appルーティング設定

% vi site_app/urls.py

from django.urls import path
from . import views
from django.conf.urls import include, url

urlpatterns = [
    url('', views.IndexView.as_view(), name='index'),
]

site_appビュー作成

% vi site_app/views.py

from django.shortcuts import render
from django.views import generic

class IndexView(generic.TemplateView):

    template_name = 'index.html'

site_appトップページ用テンプレート作成

% mkdir site_app/templates
% vi site_app/templates/index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>Djangoトップページ</h1>
<div>
</div>
</body>
</html>

ローカル実行

ここまでできたら実行してみます。

% python manage.py runserver

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

February 14, 2020 - 10:10:19
Django version 3.0.3, using settings 'social_test.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

マイグレーションしていないのでメッセージが出ていますが、今回はテストなので問題ありません。

外部に公開する

phpの場合はlaravel valetに内蔵されていたshareコマンドですが、phythonの場合はこれに当たるものがないのでngrokを直接導入して使います。

ngrokのインストール

macでのインストール方法です、コマンド一発!簡単です。
% brew cask install ngrok

使い方
% ngrok http [ポート番号]

公開する

先程ローカル実行したときのメッセージ内に
Starting development server at http://127.0.0.1:8000/
という記述がありました。
この意味は
開発Webサーバを http://127.0.0.1 のサーバの 8000番ポートで開始した。
ということでしたので、

 ngrok http 8000 とします。

新たなシェルを起動して実行します。

% ngrok http 8000 

ngrok by @inconshreveable                                                                     (Ctrl+C to quit)

Session Status                online
Session Expires               7 hours, 59 minutes
Version                       2.3.35
Region                        United States (us)
Web Interface                 http://127.0.0.1:4041
Forwarding                    http://429b90ec.ngrok.io -> http://localhost:8000
Forwarding                    https://429b90ec.ngrok.io -> http://localhost:8000

Connections                   ttl     opn     rt1     rt5     p50     p90
                              0       0       0.00    0.00    0.00    0.00

と表示されました。
ここで見るのは[http://429b90ec.ngrok.io ]と[https://429b90ec.ngrok.io]
の2つです。
違いはhttpかhttpsかだけでどちらでもアクセスできます。

ブラウザで https://429b90ec.ngrok.io を開いてみましょう

この様に表示されれば世界中からこのページを開くことができます。
FacebookのAPIを使ったテストにはhttps+グローバルなアドレスが欠かせませんので有効な手段かと思います。

Djangoでソーシャルログインを実行するには
django-debug-toolbar プラグインなどを導入する必要があります。
またの機会に書いていこうと思います。

[429b90ec]という文字はランダムでつけられたものです。
https://ngrok.com/pricing
こちらで登録するとサブドメインを自由につけることができます。

コメント

タイトルとURLをコピーしました