خطأ في المصادقة على الحساب

العنوان: n8n ذاتي الاستضافة + Gmail OAuth يُرجع Error: Unauthorized بعد رد الاتصال من Google
مرحباً. أحتاج إلى مساعدة في تثبيت n8n ذاتي الاستضافة لأنني حاولت لعدة أيام الاتصال بـ Gmail عبر OAuth ولم أتمكن من إكمال التفويض.

البيئة

  • n8n ذاتي الاستضافة على VPS من HostGator
  • إصدار n8n: 2.35.3
  • Docker Compose
  • Traefik كـ reverse proxy
  • PostgreSQL
  • Redis
  • النطاق العام: https://n8n.creativenfc.com
  • SSL/HTTPS يعمل
  • Gmail API مُفعّل على Google Cloud
  • عميل OAuth من نوع Web Application تم إنشاؤه
  • حسابي على Gmail تمت إضافته كمستخدم اختبار

الإعدادات العامة لـ n8n

حالياً لدي:

N8N_HOST=n8n.creativenfc.com
N8N_PROTOCOL=https
WEBHOOK_URL=https://n8n.creativenfc.com/
N8N_EDITOR_BASE_URL=https://n8n.creativenfc.com/
N8N_PROXY_HOPS=1

كان N8N_PROTOCOL مُعيناً أصلاً كـ http، لكن غيّرته بالفعل إلى https وأعدت إنشاء الحاوية.
تحققت داخل الحاوية:

docker exec n8n-main printenv N8N_PROTOCOL

فيعيد:

https

الحاويات تعمل بشكل صحيح:

  • n8n-main
  • n8n-main-worker
  • traefik
  • postgres
  • redis

المشكلة مع Gmail OAuth

أنشئ بيانات اعتماد Gmail OAuth2 داخل n8n وأدخل بشكل صحيح:

  • معرّف العميل
  • سرّ العميل
    بعد ذلك أضغط:
    Connect my account
    يفتح Google صفحة التفويض بشكل صحيح.
    أسجل الدخول بحسابي على Gmail وأقبل الأذونات ويعيدني Google بشكل صحيح إلى:
https://n8n.creativenfc.com/rest/oauth2-credential/callback

لكن في تلك اللحظة يعرض n8n:

Error: Unauthorized

لذلك لا تحصل بيانات الاعتماد على رمز الوصول أبداً.
إذا حاولت استخدام عقدة Gmail لاحقاً تظهر:

Unable to sign without access token

معلومة أخرى قد تكون مهمة

إذا دخلت إلى n8n مباشرة عبر:

https://n8n.creativenfc.com

تظهر لي شاشة تسجيل الدخول الخاصة بـ n8n.
حالياً لا أتذكر كلمة المرور الداخلية لـ n8n واسترجاع كلمة المرور عبر البريد الإلكتروني لا يعمل لأن SMTP لم يتم إعداده.
لكن من لوحة تحكم HostGator يوجد وصول يسمح لي بالدخول مباشرة إلى n8n وهناك أظهر مصادقتي كـ Owner.
لذلك أشك في أنه قد يكون هناك مشكلة ما تتعلق بجلسة العمل/ملفات تعريف الارتباط عند عودة Google إلى رد اتصال OAuth.

Google Safe Browsing

حصلت أيضاً على تحذير أحمر من Chrome حول النطاق الفرعي.
سجلت creativenfc.com في Google Search Console عبر DNS TXT.
أظهرت Search Console:

  • Deceptive pages
  • Possible phishing detected on user login
    لا توفر Sample URLs.
    طلبت بالفعل مراجعة لأن n8n.creativenfc.com هي نسخة خاصة وشرعية من n8n.
    لا أعرف ما إذا كان هذا مرتبطاً مباشرة بـ OAuth أو إذا كانت مشكلة منفصلة.

ما أحتاج إلى معرفته

هل يمكن لأحد أن يخبرني ما الذي يجب أن أراجعه بشكل محدد لحل:

Error: Unauthorized

عند عودة Google إلى:

/rest/oauth2-credential/callback

؟
خاصة أنني مهتم بمعرفة ما إذا كان قد يكون مرتبطاً بـ:

  • ملف تعريف الارتباط/جلسة العمل n8n-auth؛
  • Traefik أو رؤوس reverse proxy؛
  • حقيقة الدخول إلى n8n من لوحة تحكم مزود الخدمة؛
  • متغير بيئة إضافي؛
  • إعدادات OAuth في n8n 2.x.
    أفضل عدم إعادة تثبيت n8n أو حذف سير العمل/الإعدادات إذا كانت هناك طريقة لتشخيص السبب الفعلي أولاً.
    شكراً.

وصف المشكلة/الخطأ/السؤال

ما هي رسالة الخطأ (إن وجدت)؟

يرجى مشاركة سير العمل الخاص بك

(حدد العُقد على لوحتك واستخدم اختصارات لوحة المفاتيح CMD+C/CTRL+C و CMD+V/CTRL+V لنسخ ولصق سير العمل.)

شارك الإخراج الذي تم إرجاعه بواسطة العقدة الأخيرة

معلومات عن إعداد n8n الخاص بك

  • إصدار n8n:
  • قاعدة البيانات (الافتراضية: SQLite):
  • إعداد n8n EXECUTIONS_PROCESS (الافتراضي: own, main):
  • تشغيل n8n عبر (Docker, npm, n8n cloud, desktop app):
  • نظام التشغيل:

مرحباً @Brandon_Gutierrez أهلاً وسهلاً!
لقد عكست نسخة n8n 2.0 الإعداد الافتراضي لـ N8N_SKIP_AUTH_ON_OAUTH_CALLBACK من true إلى false، لذا في الإصدار 2.35.3 يتطلب نقطة نهاية رد الاتصال جلسة n8n مصرّح بها في نفس المتصفح الذي يعيد Google التوجيه إليه. الوصول إلى المحرر عبر لوحة HostGator بدلاً من تسجيل الدخول في المجال الخاص بك لا يترك ملف تعريف ارتباط n8n-auth على n8n.creativenfc.com، لذا فإن req.user غير معرّف عند رد الاتصال ويعيد “غير مصرّح” بدون سطر سجل. عيّن هذا على حاوية n8n-main وأعد إنشاؤها:

N8N_SKIP_AUTH_ON_OAUTH_CALLBACK=true

ثم أنشئ بيانات اعتماد Gmail مرة أخرى. Traefik و N8N_PROXY_HOPS وعلم الاستعراض الآمن منفصلة عن هذا.
راجع هذا:

مرحباً، يبدو أن هذا أقل تعلقاً بمشكلة تكوين Gmail OAuth وأكثر تعلقاً بمشكلة جلسة/مصادقة n8n تحدث عندما تعود Google إلى رابط الاستدعاء.

سأقوم بتشخيصها قبل تغيير أو إعادة تثبيت أي شيء. أول الأشياء التي سأتحقق منها هي ملف تعريف الارتباط n8n-auth في طلب الاستدعاء، سلوك ملف تعريف الارتباط SameSite/Secure، رؤوس HTTPS المعاد توجيهها بواسطة Traefik، وسجلات n8n أثناء محاولة OAuth الفعلية.

سأختبر أيضاً سير العمل أثناء الوصول إلى n8n مباشرة عبر https://n8n.creativenfc.com بدلاً من الوصول عبر لوحة تحكم HostGator، حيث قد يكون هذا ذا صلة بكيفية إنشاء الجلسة.

هل يمكنك مشاركة:

  1. سجلات n8n المُنشأة أثناء محاولة OAuth فاشلة واحدة (docker logs حول رابط الاستدعاء)

  2. تكوين/تسميات Traefik الخاصة بك مع إزالة الأسرار

  3. لقطة شاشة لطلب الشبكة في المتصفح إلى /rest/oauth2-credential/callback تعرض رؤوس الطلب/الاستجابة (إخفاء ملفات تعريف الارتباط/الرموز)

  4. ما إذا كان ملف تعريف الارتباط n8n-auth موجوداً على طلب الاستدعاء هذا

بناءً على ذلك، يمكنني تضييق نطاق ما إذا كان الفشل يأتي من جلسة المتصفح أو وكيل عكسي أو مصادقة n8n أو معالجة حالة OAuth بدلاً من التخمين.

مرحبا، أنا أواجه أحيانا نفس المشكلة التي تواجهها، عادة ما تكون التطبيقات التي تنشئها من Google لديها تاريخ انتهاء صلاحية افتراضي، جرب إنشاء تطبيق جديد لحل مشكلتك

أواجه مشكلة مماثلة مع OAuth عبر Azure.
مع متغير البيئة N8N_SKIP_AUTH_ON_OAUTH_CALLBACK يمكنني الآن إنشاء الاتصال.

كان لدي ملف تعريف الارتباط n8n-auth، لكن تم حظره وفقاً لوحدة التحكم في المطور، لأن SameSite مضبوط على strict، على الرغم من أنني قمت بتعيين N8N_SAMESITE_COOKIE="lax" أو أيضاً "none".

كان إدخال سجل n8n ببساطة:
2026-09-03T06:08:29.911Z | error | OAuth2 callback failed {"error":{"name":"ResponseError","message":"Unauthorized","stack":"ResponseError: Unauthorized\n at OauthService.decodeCsrfState (/usr/local/lib/node_modules/n8n/src/oauth/oauth.service.ts:553:10)\n at OauthService.resolveCredential (/usr/local/lib/node_modules/n8n/src/oauth/oauth.service.ts:591:31)\n at OAuth2CredentialController.handleCallback (/usr/local/lib/node_modules/n8n/src/controllers/oauth/oauth2-credential.controller.ts:53:5)\n at handler (/usr/local/lib/node_modules/n8n/src/controller.registry.ts:116:12)\n at /usr/local/lib/node_modules/n8n/src/controller.registry.ts:126:8"},"file":"oauth2-credential.controller.js","function":"handleCallback"}