コンテンツにスキップ

ntorelabo

Front End Developer

  • pickup
  • WordPress
  • PHP
    • PHP技術者認定試験
  • Docker
  • Next.js
  • AWS
  • Laravel
  • site map
  • search

ntorelabo

Front End Developer

  • search
  • pickup
  • WordPress
  • PHP
    • PHP技術者認定試験
  • Docker
  • Next.js
  • AWS
  • Laravel
  • site map

NextAuth Githubアカウントを利用

  • ホームページ
  • NextAuth Githubアカウントを利用
  • 9月, 木, 2022
  • Next.js
NextAuth Githubアカウントを利用

Contents [hide]

  • 1 そもそも認証とは
  • 2 手順
    • 2.1 パッケージをインストールします
    • 2.2 認証の設定ファイルを作成します
    • 2.3 環境変数を設定します
    • 2.4 GitHubの認証情報を取得
    • 2.5 NextAuthのプロバイダーを設定します
    • 2.6 ログインボタンを作成します

そもそも認証とは

認証とは、「あなたが本当にあなたであること」を確認するプロセスです。

ユーザー アプリ 認証プロバイダー (GitHub/Google/Email等) 1. ログイン要求 2. 認証リクエスト 3. 認証情報返却 主な認証方式: – ソーシャルログイン: GitHub, Google, Twitter, Facebook等 – メール/パスワード認証: 独自のユーザーデータベースを使用 – Magic Links: メールアドレスのみでワンタイムリンクを使用
https://authjs.dev/

手順

パッケージをインストールします

npm install next-auth

認証の設定ファイルを作成します

app/api/auth/[…nextauth]/route.tsを作成します

import NextAuth from "next-auth"
import GithubProvider from "next-auth/providers/github"

const handler = NextAuth({
  providers: [
    GithubProvider({
      clientId: process.env.GITHUB_ID!,
      clientSecret: process.env.GITHUB_SECRET!,
    }),
  ],
})

export { handler as GET, handler as POST }

環境変数を設定します

プロジェクトのルートに.envファイルを作成します

GITHUB_ID=あなたのGitHub Client ID
GITHUB_SECRET=あなたのGitHub Client Secret
NEXTAUTH_SECRET=任意の安全な文字列
NEXTAUTH_URL=http://localhost:3000

GitHubの認証情報を取得

GitHub.comにログイン Settings > Developer settings > OAuth Apps “New OAuth App”をクリック 以下を入力:

  • Application name: 任意の名前
  • Homepage URL: http://localhost:3000
  • Authorization callback URL: http://localhost:3000/api/auth/callback/github

NextAuthのプロバイダーを設定します

app/layout.tsxを編集します

import { SessionProvider } from "next-auth/react"

export default function RootLayout({
  children,
}: {
  children: React.ReactNode
}) {
  return (
    <html>
      <body>
        <SessionProvider>{children}</SessionProvider>
      </body>
    </html>
  )
}

ログインボタンを作成します

app/page.tsxを編集します

'use client'
import { signIn, signOut, useSession } from "next-auth/react"

export default function Home() {
  const { data: session } = useSession()

  if (session) {
    return (
      <div>
        <p>ようこそ, {session.user?.name}さん</p>
        <button onClick={() => signOut()}>ログアウト</button>
      </div>
    )
  }

  return (
    <div>
      <p>ログインしていません</p>
      <button onClick={() => signIn('github')}>GitHubでログイン</button>
    </div>
  )
}

動作確認:

  1. http://localhost:3000 にアクセス
  2. 「GitHubでログイン」ボタンをクリック
  3. GitHubの認証画面が表示され、承認後にログイン完了
pickup
最近の投稿
  • WordPressサイトのサブディレクトリ→サブドメイン移行手順 2025年7月6日
  • Laravelでリッチテキストエディタで使いやすい画像アップロード機能を実装(TinyMCE) 2025年6月22日
  • 【PHP】出力バッファリング制御 2025年5月22日
  • basic認証のパスワードを忘れた場合 2025年5月14日
  • PHP 8.0〜から実装で便利な機能(名前付き引数、match) 2025年5月11日
  • さくらインターネットからWHOIS登録メールアドレスの利用廃止のメールが来た 2025年5月9日
  • スムーズにスクロールする処理をjQueryで実装 2025年5月5日
  • Gemini for Google Workspace 活用術 2025年4月24日
  • Google Cloud の始め方 2025年4月20日
  • 【PHP】switch分の書き方、PHP 7.3 から PHP7.4の変更点 2025年4月19日
  • 【PHP】新しい方の指定方法「nullable」 2025年3月25日
  • 「PHPでJSONを扱う」json_encodeとjson_decode完全ガイド 2025年3月23日
  • 【WordPress自作テーマ開発】固定ページを自動作成する方法(下層ページ実装) 2025年3月18日
  • 【PHP】プロトコル / ラッパーについて(file:// php:// http:// https://) 2025年3月17日
  • 【PHP】stdClass を使用して(object) でキャスト 2025年3月16日
  • モダンなPHPコードで使用!無名関数の使い方 2025年3月15日
  • Cursor 便利な機能まとめ、Project Rules 2025年3月15日
  • PHP セッション名の変更方法と php.ini の記述方法まとめ 2025年3月12日
  • 【PHP】関数内でグローバル変数を使用するためには global キーワード 2025年3月10日
  • 【php8上級/準上級試験】模擬問題解説 問題30 strtotime() 2025年3月4日
About Us

Ready To Start Work With Us?

Felis consequat magnis est fames sagittis ultrices placerat sodales porttitor quisque.

Get a Quote
recent posts
  • WordPressサイトのサブディレクトリ→サブドメイン移行手順
  • Laravelでリッチテキストエディタで使いやすい画像アップロード機能を実装(TinyMCE)
  • 【PHP】出力バッファリング制御
  • basic認証のパスワードを忘れた場合
  • PHP 8.0〜から実装で便利な機能(名前付き引数、match)
  • さくらインターネットからWHOIS登録メールアドレスの利用廃止のメールが来た
  • スムーズにスクロールする処理をjQueryで実装
  • Gemini for Google Workspace 活用術
Opening Hours
Week Days 10:00 - 17:00
Saturday 10:00 - 15:00
Sunday Day Off
Contact us
popular posts
  • WordPressで画像を拡大表示するなら「Firelight Lightbox」(旧名:Easy Fancybox) 1.1k件のビュー
  • 【WordPress】カスタムフィールド作成の仕方「ACF」Advanced Custom Fieldsの使用法 742件のビュー
  • 【チートシート】Linuc Lv1-102 実務での使用例も解説 607件のビュー
  • My-Snow-Monkey使用例、子テーマによるカスタマイズ 512件のビュー
  • 【WordPressエラー】「Warning: Undefined variable $post in …」「Warning: Attempt to read property “ID” on null in …」 461件のビュー
  • Twitter、Facebookのタイムラインを埋め込む 415件のビュー
  • 【Next.js】ライブラリ使わないでカルーセルスライダー 303件のビュー
  • ローカル、グローバルIPアドレスの違いと確認手順 275件のビュー
  • AWS認定ソリューションアーキテクト-アソシエイトレベル 248件のビュー
  • WordPress自作、カスタマイズ 229件のビュー
Search
Copyright © 2025 ntorelabo | Powered by Desert Themes