簡體   English   中英

使用 Google OAuth2 將 Node.js 應用程序部署到 Heroku 時出現 redirect_uri_mismatch

[英]I'm getting a redirect_uri_mismatch when deploying my Node.js app to Heroku using Google OAuth2

我的任務是使用 Node.js 創建一個服務器,它將讀取來自 Google 帳戶的電子郵件並將這些電子郵件中的內容解析為我們可以存儲在數據庫中的數據。 我在 NPM 中使用 Google 的googleapis包 (v103.0.0) 來驗證/授權我們想要使用的任何帳戶。

當我們嘗試切換帳戶並讓用戶重新授權時,問題就出現了。 在本地機器上開發期間,Auth 過程按預期工作:

  1. 客戶端請求一個 Auth URL。
  2. 服務器生成一個新的 Auth URL 並將其發送回客戶端。
  3. 客戶端重定向到該 URL 並顯示 Google 同意屏幕。
  4. 要求客戶在已登錄的 Google 帳戶之間進行選擇。
  5. 客戶端授權應用程序並使用代碼重定向回服務器。
  6. 服務器使用代碼生成/保存令牌,從而允許它使用 Gmail API。

但是,在部署到 Heroku 后,Google 同意屏幕不再允許用戶選擇帳戶。 相反,在第 3 步,它會顯示此消息 在與此錯誤相關的幾乎所有其他問題中,錯誤代碼/消息下方總是有其他信息,但對我來說什么都沒有。 我確保:(1) 我在 Heroku 中使用的域在 Google Cloud Console 上得到驗證,並且 (2) Node.js 應用程序中的 redirect_uri 將正確的域傳遞給 Auth URL,即使在生產中也是如此。


出於隱私原因,我無法提供網址,但如果我應該包含任何源代碼或 Cloud Console 信息,請告訴我。

發布此問題后不久,我意識到我使用了不正確的 OAuth 2.0 客戶端 ID 類型。 當我應該使用“Web 應用程序”時,我試圖使用“桌面”。 看看這張圖片,看看有什么不同。

當您選擇“Web 應用程序”時,您會看到一些新選項:授權的 JavaScript 來源和授權的重定向 URI。 這是您需要填寫允許的 URI 的地方。 這是應該是什么樣子的示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM