framework/NextAuth

๐Ÿ“ฆ Box OAuth Provider ์„ค์ • ์˜ˆ์‹œ

octo54 2025. 5. 21. 11:33
๋ฐ˜์‘ํ˜•

 

๐Ÿ“ฆ Box OAuth Provider ์„ค์ • ์˜ˆ์‹œ

import NextAuth from "next-auth"
import BoxProvider from "next-auth/providers/box"

export default NextAuth({
  providers: [
    BoxProvider({
      clientId: process.env.BOX_CLIENT_ID,
      clientSecret: process.env.BOX_CLIENT_SECRET,
    }),
  ],
})

๐Ÿ“‘ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ • (.env)

BOX_CLIENT_ID=your-box-client-id
BOX_CLIENT_SECRET=your-box-client-secret
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your-nextauth-secret

๐Ÿ“‚ Box Developer Console ์„ค์ •

๋ฐ˜์‘ํ˜•
  1. https://app.box.com/developers/console ์ ‘์†
  2. Custom App → OAuth 2.0 with JWT ์„ ํƒ
  3. Redirect URI ์ถ”๊ฐ€:
  4. http://localhost:3000/api/auth/callback/box
  5. ํด๋ผ์ด์–ธํŠธ ID ๋ฐ ์‹œํฌ๋ฆฟ ๋ฐœ๊ธ‰

๐Ÿงช Access Token ํ™œ์šฉ ์˜ˆ์‹œ

async function jwt({ token, account }) {
  if (account?.provider === "box") {
    token.accessToken = account.access_token
  }
  return token
}

async function session({ session, token }) {
  session.accessToken = token.accessToken
  return session
}

๐Ÿง‘‍๐Ÿ’ป ์‚ฌ์šฉ์ž ์ •๋ณด ํ‘œ์‹œ ์˜ˆ์‹œ

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

export default function BoxProfile() {
  const { data: session } = useSession()
  return (
    <>
      <p>Signed in as {session?.user?.name}</p>
      <p>Access Token: {session?.accessToken}</p>
    </>
  )
}

โš ๏ธ ์ฃผ์˜์‚ฌํ•ญ

  • Box API๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํŒŒ์ผ ์ ‘๊ทผ ๋ฐ ๊ถŒํ•œ ๊ด€๋ฆฌ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์„ค๊ณ„๋˜์–ด ์žˆ์–ด
    ์‚ฌ์šฉ์ž ํ”„๋กœํ•„ ์ •๋ณด๊ฐ€ ์ œํ•œ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ถ”๊ฐ€์ ์œผ๋กœ Box API v2 ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ ์š”์ฒญ ํ•„์š”

 

NextAuth Box, Box OAuth ์—ฐ๋™, Box ๋กœ๊ทธ์ธ ๊ตฌํ˜„, Box ํด๋ผ์ด์–ธํŠธ ์„ค์ •, OAuth2 ํŒŒ์ผ API, Box API ์ธ์ฆ, ์‚ฌ์šฉ์ž ์„ธ์…˜ ๊ด€๋ฆฌ, Next.js Box ํ†ตํ•ฉ, ํด๋ผ์šฐ๋“œ ์Šคํ† ๋ฆฌ์ง€ ๋กœ๊ทธ์ธ, SEO ์ตœ์ ํ™” 10๊ฐœ