【NextAuth.js】ソーシャルログインの実装。
2022/6/21
2023/1/21
GoogleやTwitter、FacebookなどのSNSアカウントを使ってログインできる「ソーシャルログイン」の実装方法をまとめていきたいと思います。
目次
1. 使用するパッケージをインストールする
「next-auth」をインストール
$ npm install next-auth
2. プロバイダ側(SNSサービス側)の設定をする
GoogleやTwitterなど認証機能を使いたいサービスごとに「⑴ clientId」と「⑵ clientSecret」を事前に取得する必要があります。
「Googleアカウント」でログインしたい場合
Google Cloud Platform(GCP)で「clientId」と「clientSecret」の2つを取得します。
こちらは下記記事がとても参考になりました 。
「Twitterアカウント」でログインしたい場合
※分かり次第更新します。
3. Next.js側の設定をする
「.env」ファイル
プロバイダ側の設定で取得した「clientId」と「clientSecret」を.env
ファイル内記載します。
(もしトップディレクトリに.env
ファイルがない場合は作成してください。)
GOOGLE_CLIENT_ID=[取得したクライアントID]
GOOGLE_CLIENT_SECRET=[取得したクライアントシークレット]
「pages/api/[…nextauth].js」ファイル
pages/api
ディレクトリ内にauth
フォルダを作成し、そこに[...nextauth].js
を作成します。
[…nextauth].js
では「使用するプロバイダの指定」をします。
import NextAuth from 'next-auth';
import GoogleProvider from 'next-auth/providers/google';
export default NextAuth({
// 1: ログインに使用するプロバイダを指定
providers: [
GoogleProvider({
clientId: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOGLE_CLIENT_SECRET,
}),
],
secret: 'secret',
});
プロバイダごとに記載方法が異なるので、こちらの記事を参考に選んで記載してみてください。
「_app.js」ファイル
_app.jsのComponentをSessionProvider
で囲います。
import {SessionProvider} from 'next-auth/react';
function MyApp({ Component, pageProps: { session, ...pageProps } }) {
return(
<SessionProvider session={session}>
<Component {...pageProps} />
</SessionProvider>
)};
export default MyApp;
4. ログインボタンを作る
NextAuthでは、signIn()
でログイン、signOut()
でログアウトの処理を実装することができます。
import { useSession, signIn, signOut } from "next-auth/react"
export default function LoginButton(props) {
// セッション情報を取得
const { data: session } = useSession()
return (
{session ? // ログイン判定
<button onClick={() => signOut()}>ログアウト</button>:
<button onClick={() => signIn()}>ログイン</button>
}
);
};
5. ログインユーザー情報をデータベースに保存する
ログインしたユーザー情報をデータベースへ保存したい場合は、「Prisma」を利用すると比較的簡単に実装することができます。
詳しくはこちらの記事を参考にしてみてください。
最近の記事
音楽生成AI「Suno」の使い方まとめ!作詞作曲が簡単にできる?
簡単に曲が作れるAIということでよく聞く「Suno(Chirp)」についてまとめました。
目次「Suno」とはテキストからさまざまな音声を生成する「Bark」歌詞から曲を生成する「Chirp」...
2023/11/24
2023/11/24
【Open AI】APIの料金まとめ|GPT・DALL·E・Whisperなど
Open AIのAPI(一部)の料金をまとめました。
参考のために日本円は「1ドル150円」で換算をしています。
目次Text generation: テキスト生成Assistants ...
2023/11/22
2023/11/22
【Next.js】Assistants APIの基本的なコードまとめ。
Open AIの「Assistants API」をNext.jsで使用する時の基本的なコードをまとめました。
目次Open AIのAPIセットアップ基本の使い方Threads: スレッドを作る...
2023/11/21
2023/11/21
【Next.js】Open AIのAPIでファイルをアップロードする方法。
今回は、Next.jsサイトからOpen AIのAPI(Upload file)で、ファイルをアップロードする方法を実装するのに時間がかかったのでその過程と最終コードをまとめます。(Vercelにデ...
2023/11/21
2023/11/22
「生成系AIのWEBプロダクトTOP50」をまとめてみる。
Andreessen Horowitzが出している記事で紹介されている「AIプロダクトの月間訪問者数ランキングTOP50」のサービスをまとめました。
目次ChatGPTcharacter.ai...
2023/10/3
2023/10/3
【Next.js 13】NextAuth+FireStoreにユーザー情報を保存する。
今回は、以下の3つをNext.js 13で実装するためのメモです。
Googleアカウントでログインできる
アカウント、セッション情報をFirestoreに保存する
サーバーサイ...
2023/7/12
2023/7/12