وقت بخیر!
ارور 400: redirect_uri_mismatch در هنگام استفاده از ورود با جیمیل (Google Sign-In) معمولاً به این دلیل رخ میدهد که redirect URI در تنظیمات کنسول گوگل درست پیکربندی نشده است. این URI باید دقیقاً با آدرسی که شما در کد خود استفاده میکنید، یکسان باشد.
دلایل رایج این ارور:
1. عدم تطابق دقیق آدرس URI
آدرسهایی که در Google Developers Console ثبت شدهاند باید کاملاً با آدرسهای مورد استفاده در اپلیکیشن یا وبسایت شما یکسان باشند. حتی تفاوتهای کوچک مثل وجود یا عدم وجود / در انتهای URI میتواند این خطا را ایجاد کند.
2. استفاده از پروتکلهای مختلف (http یا https)
اگر سایت شما از HTTPS استفاده میکند، اطمینان حاصل کنید که همین پروتکل در redirect URI مشخص شده باشد.
3. فراموشی ثبت URI در کنسول گوگل
آدرس مورد نظر شما باید به صورت دستی در تنظیمات Authorized redirect URIs ثبت شود.
4. دامنههای محلی (localhost)
اگر در حال کار از روی کامپیوتر خودتون و از لوکالهاست هستید، ممکن است آدرس http://localhost:port یا موارد مشابه ثبت نشده باشد.
برای رفع مشکل این راهکار ها را امتحان کنید:
1. وارد Google Developers Console شوید.
2. پروژه مربوطه را انتخاب کنید.
3. از منوی سمت چپ، به مسیر زیر بروید:
APIs & Services > Credentials
4. کلید (Credential) مربوط به OAuth 2.0 Client را پیدا کرده و روی آن کلیک کنید.
5. در بخش Authorized redirect URIs:
آدرس مورد نظر خود را اضافه کنید. (مثلاً:
https://yoursite.com/oauth2callback)
اگر از چند محیط استفاده میکنید (مثلاً تست، توسعه، تولید)، URIهای مربوط به هر محیط را اضافه کنید.
6. تغییرات را ذخیره کرده و دوباره تلاش کنید.
---
نکات:
اگر از کتابخانههای آماده (مانند Passport.js در Node.js یا Socialite در Laravel) استفاده میکنید، اطمینان حاصل کنید که آنها از URI صحیح استفاده میکنند.
برای لوکالهاست میتوانید URIهایی مثل زیر را استفاده کنید:
http://localhost:3000/oauth2callback
اگر مشکل همچنان پابرجاست، جزئیات بیشتری ارائه دهید