تسجيل الدخول جوجل ضرب مرتين؟
سؤال
أنا أستخدم Google Login عبر JS ويظهر الرمز الخاص بي هو الحصول على البيانات مرتين. لست متأكدا لماذا يحدث هذا.
عندما أضق من زر "تسجيل الدخول باستخدام Google"، فإنه يبصق (Console.log (نتيجة)) للمستخدم. ثم يحدث موجه يطلب مني اختيار حساب لي (أنا تسجيل الدخول إلى عدة حسابات Google). عند النقر فوق الحساب، أود، ثم يبصق الكود بيانات المستخدم مرة أخرى.
لماذا يحدث هذا؟ إنها مشكلة لأن المكان الذي تبصق فيه البيانات، أود إجراء مكالمة AJAX للتحقق من المستخدم ثم إعادة توجيهها. لذلك في جوهرها، يحاول القيام بذلك مرتين - وهو ليس رائعا، ماذا لو كنت لا أريد تسجيل الدخول باستخدام بيانات الاعتماد جوجل تمرير مرة أخرى على الذهاب أولا؟
giveacodicetagpre.
تحديث: إذا قمت بتسجيل الخروج من جميع حسابات Google الخاصة بي (باستثناء واحد واحدا فقط)، لا تزال المكالمة إلى Google مكررة. هذه المرة تقوم بتسجيل الدخول وأرى Console.log () إخراج البيانات مرتين. رموز الوصول متطابقة.
التحديث 2: console.log (resp) هو إخراج مرتين
التحديث 3: أكثر توضيحا فقط:
المحلول
أنت تواجه مكالمتين إلى "console.log (resp)؛" ضمن وظيفة "googlecallback" الخاصة بك لأن:
وظيفة تحددها لاستدعاء تسجيل الدخول الخاص بك في كل مرة يتم فيها توقيع المستخدم في حالة التغييرات
هذا الاقتباس مأخوذ من "مراقبة حالة جلسة المستخدم" صفحة الويب.
كما ترون في المقالة، فإن كائن نتيجة التفويض له ثلاثة قيم "طريقة" مختلفة "
لذلك يتم تشغيل رمز رد الاتصال الخاص بك عند ظهور موجه تسجيل الدخول ("موجه" ("موجه") وعند ظهور Banner "مرحبا للبيع" ("Auto").
لإيقاف رمز رد الاتصال الخاص بك من التعامل مع كل حدث مشغل يمكنك تغيير التعليمات البرمجية الخاصة بك كما يلي:
giveacodicetagpre.سيتصل هذا الرمز فقط "gapi.client.oauth2.userinfo.get ()" إذا تم تسجيل المستخدم في حالة تسجيل الدخول والحدث الذي يسبب رد الاتصال هو نوع "موجه".
نصائح أخرى
Google دائما تمر عبر الحالة "موجه"، ولكن من خلال الحالة "تلقائية" فقط عندما يكون لدى المستخدم تسجيل دخول نجاح سابق ويمكن تسجيل الدخول تلقائيا.