Next.js 專案部署 Heroku:解決 Auth.js Google OAuth 登入失敗問題
將 Next.js 專案部署到 Heroku 時,遇到了 Auth.js(NextAuth.js)整合 Google OAuth 登入失敗的問題,包括 redirect_uri_mismatch、UntrustedHost 等常見錯誤。本文整理踩坑過程與解法,包含環境變數設定與 Google App Callback 設定,協助你順利排除問題。

今天將 Next.js 專案部署到 Heroku 時,遇到了一些 Auth.js Google OAuth 登入失敗的小坑,這裡簡單記錄一下過程與解法,希望能幫助到有相似需求的朋友。
環境
- next:
15.2.1
- react:
^19.0.0
- next-auth:
5.0.0-beta.25
next-auth 則是 Auth.js 生態系中專為 Next.js 框架打造的官方整合包,名稱保留為 next-auth 是為了降低遷移成本。簡單來說,Auth.js 是底層核心與多框架生態,next-auth 是專屬於 Next.js 的 Auth.js 官方實作。
碰到的問題
以下是我在嘗試過程中遇到的幾個錯誤訊息,簡單列出供參考:
- 重新導向回來網址變成 localhost
- 按下 Google 登入會直接錯誤
redirect_uri_mismatch
- Google Oauth 重新導向回來網站錯誤 log 是
[UntrustedHost]: Host must be trusted
大概有印象的就是碰到以上這幾個錯訊息
解決方案
首先確認你的 Google App 中『已授權的重新導向 URI』,確保已包含你的 callback URL,這樣使用者授權後才能正確導回你的網站。
主要是 #{HOST}/api/auth/callback/google
e.g.
這個有 match Google 才會放你回來
接著確認你的環境變數
AUTH_SECRET= # 這個一定要
AUTH_TRUST_HOST=true # 新增
AUTH_URL=YOUR_HOST # 新增你的網站 HOST e.g. https://foo.bar.baz (注意:URL 結尾不要加上 /)
V5 版本的環境變數有更動,可以確認:Upgrade Guide (NextAuth.js v5)
雖然官方文件提到 Auth.js 會自動推測,但實際測試並未成功,推測是因為 Heroku 的反向代理設定導致判斷錯誤。
確認以上這些設定之後就可以重啟服務,確認環境變數有載入成功。這樣應該就可以運作了!