このサイトの作り方 (4) SNSログイン認証の実装
今回は、GitHub・Google・Discord・X(旧Twitter)・LINEでログインできる仕組みについて書きます。 パスワードを別途覚えてもらう必要がないよう、普段使っているSNSアカウントでそのままログインできる仕組みを用意しました。django-allauthというライブラリを使うと、複数のSNS認証を比較的簡単に組み込めます。 苦労したのは、各SNSごとにプロフィール情報の形式がまったく違う点でした。アイコン画像ひとつとっても、GitHubは直接URLを返しますが、Discordは画像のハッシュ値からURLを組み立てる必要があり、LINEは長い署名付きのURLを返してきます。それぞれに合わせて、ログイン時にアイコンを自動取得して保存する処理を書きました。 LINEログインを追加したときは、権限の指定が足りずにエラーになったり、返ってきたアイコンURLが長すぎてデータベースに保存できなかったりと、いくつもの壁にぶつかりました。ひとつずつエラーメッセージを読み解きながら直していく作業は根気が要りますが、直った瞬間の達成感は大きいです。 複数の環境(クラウドと自宅サーバー)でサイトを同時に動かしている都合上、各SNSの管理画面に登録するコールバックURLも、環境の数だけ用意する必要がありました。プロバイダーによっては、1つのアプリに登録できるコールバックURLが1つに制限されているものもあり、環境を増やすたびに設定を見直す必要があることも分かりました。 こうして地道に対応を重ねた結果、今ではGitHub・Google・Discord・X・LINEの5種類のアカウントで、それぞれ気軽にログインできるようになっています。選択肢が多いほど、初めて訪れた人にとって「わざわざ新しいアカウントを作らなくていい」という安心感につながると感じています。 次回は、サイトの訪問者数やアクセス状況を記録する仕組みについて書きます。
コメント(0)
まだコメントはありません
ログインするとコメントできます。