About
これは、LINEログイン の公式サンプル(line-api-use-case-line-login )を最小限のスタックで再実装したものです。それぞれ以下のように対応します。
スタック | 公式サンプル | 本レポジトリ |
---|---|---|
バックエンド | AWS lambda | Flask |
フロントエンド | Nuxt | 生のHTML |
データベース | DynamoDB | インメモリ |
LINE連携 | LINE Front-end Framework | 生のAPI |
公式サンプルはAWSのサーバーレスアプリケーションモデルに従っているのに対し、本レポジトリはFlaskの入ったローカルPython環境があれば実行することができます。
Caution
公式サンプルを完全に理解したわけではないので、実装に相違点があることが想定されます。例えば、本レポジトリは取得したトークンをCookieとしてそのままクライアント側に保存していますが、公式サンプルではその部分をどのように実装しているか分かりませんでした(session storageに保存している?)。また、インメモリのdict
に取得したプロフィールをキャッシュしていますが、公式サンプルのDynamoDBは、userIdを時刻データと一緒に保存しているだけのようです。
Getting Started
Lineチャネル
- Line Developersコンソールからプロバイダーとチャネルを作成する
- 詳しい説明はLINEログイン の公式ドキュメントにあります。
- チャネルのLINEログイン設定のコールバックURLを
http://127.0.0.1:5000/callback
に設定する - チャネルIDとシークレットを環境変数に登録する
Python環境
poetry install
poetry shell
- poetryがない場合は、pipで必要なライブラリを入れてください
Usage
export FLASK_APP=app.py
export FLASK_ENV=development
flask run
http://127.0.0.1:5000
にアプリが立ち上がります。 各ページの役割は以下の通りです。
パス | 役割 |
---|---|
/ | ログインボタンを表示する |
/login | LINEログインにリダイレクトする |
/callback | LINEログインから戻り、トークンとプロフィールを取得する |
/mypage | プロフィールとログアウトボタンを表示する |
詳しいロジックは app.py
を見てください。