Django REST Framework + Next.js + NextAuth Google認証の実装が出来ない
解決済
回答 3
2022/05/17 23:49
質問内容

実現したいこと

Next Authを使ってのGoogle認証を実現したい。

発生している問題

フルスタックチャンネルの『Django REST Framework + Next.js + NextAuth Google認証』を見ながらNext AuthのGoogle認証を実装したのですが、ログイン画面からログインを試すとエラー画面になります。コンソールにはCALLBACK_OAUTH_ERRORと表示されます。

一人で解決するには時間が掛かりそうです。はる先生、どうかお力添えお願い致します。

ソースコード

[...nextauth].js

import GoogleProvider from "next-auth/providers/google"
import LineProvider from "next-auth/providers/line";

import axios from 'axios'


const settings = {
    providers: [
        GoogleProvider({
            clientId: process.env.GOOGLE_CLIENT_ID,
            clientSecret: process.env.GOOGLE_CLIENT_SECRET,
			
        }),
        LineProvider({
            clientId: process.env.LINE_CLIENT_ID,
            clientSecret: process.env.LINE_CLIENT_SECRET,
			
        }),
       
    ],
	secret: 'secret',
    callbacks: {
        async signIn(user, account, profile){
			
            if (account.provider === 'google'){
                const { accessToken, idToken } = account
                
                try {
                    const response = await axios.post(
                        `${process.env.DJANGO_URL}/api/social/login/google/`,
                        {
                            access_token: accessToken,
                            id_token: idToken,
                        }
                    )

                    const { access_token } = response.data
                    user.accessToken = access_token
		
                return true
                }
				catch(error){
                return false
                }
         }

            return false
        },
        
        async jwt(token, user, account, profile, isNewUser){
			
            if (user){
                const { accessToken } = user

                token.accessToken = accessToken
				
            }
			console.log(`account:${JSON.stringify(account)}`);
			return token;
        },

        async session(session, user){
            session.accessToken = user.accessToken
            return session
        },
    },
    pages: {
        signIn: '/auth/signin',
    },
}



export default (req, res) => NextAuth(req, res, settings)

### 自分で試したこと
CALLBACK_OAUTH_ERRORの内容がcode_verifier cookieが見つからなかったり、OAuthプロバイダから無効な状態が返された場合、コールバックの処理中に発生する可能性があるとのことですが、原因が特定できません。

### 補足情報
回答 3
ベストアンサーを選択すると、解決済みとなります。
nodata
まだ回答がありません
回答
nodata
回答するにはログインが必要です