10

के बाद बुलाया जा रहा है मैं कुछ व्यवहार से थोड़ा उलझन में हूं जो मैं फायरबेस के साथ देख रहा हूं। मैंने पुराने संस्करण का कभी भी उपयोग नहीं किया, लेकिन मेरा मानना ​​है कि GetRedirectResult Google के साथ बलों में शामिल होने के बाद से नया है।फायरबेस के लिए रीडबेज getRedirectResult को लॉगआउट

मेरे पास एक एसपीए है कि मैं वू-राउटर के साथ Vue.js का उपयोग कर रहा हूं, और फायरबेस के लिए। एक लैंडिंग पृष्ठ है, और उसके बाद दूसरा दृश्य जिसके लिए उपयोगकर्ता लॉग इन हो सकते हैं या नहीं। लॉगिन रीडायरेक्ट द्वारा किया जाता है। जब यह दूसरा दृश्य लोड होता है, तो मैं vue-राउटर 'सक्रिय' हुक में getRedirectResult की जांच करता हूं, और यदि कोई उपयोगकर्ता है, तो उपयोगकर्ता की जानकारी के साथ कुछ और सामान करें।

समस्या इस प्रकार उत्पन्न होती है:
1. हम दूसरे पृष्ठ पर हैं। उपयोगकर्ता लॉग इन करें। GetRedirectResult को उपयोगकर्ता कहा जाता है और उसे पाता है। वाह।
2. उपयोगकर्ता लॉग आउट। हम लैंडिंग पेज पर वापस आ गए हैं।
3. हम एक बटन क्लिक करते हैं जो हमें दूसरे पृष्ठ पर ले जाता है। getRedirectResult को पिछले उपयोगकर्ता को बुलाया जाता है और पाता है। क्या?! नहीं!

मुझे कुछ भी नहीं मिला है कि मुझे कुछ याद आ रही है या किसी अन्य प्रकार की अतिरिक्त जांच की आवश्यकता है, या लॉगआउट के बाद पृष्ठ को जबरन ताज़ा करने के लिए किसी भी तरह से यह भूल जाता है कि अंतिम उपयोगकर्ता लॉग इन है, या यदि यह होगा एक बग माना जाता है। किसी भी सहायता की काफी सराहना की जाएगी! Vue घटक रूटर में दूसरे पृष्ठ पर

getRedirectResult कॉल 'को सक्रिय' हुक:

 
    firebase.auth().getRedirectResult() 
     .then((result) => { 
      return result.user; 
     }).then((user) => { 
      // Do stuff. 
     }); 

अद्यतन:, लॉगआउट कॉलबैक में एक कठिन पृष्ठ ताज़ा कर करके हल इस प्रकार है:

 
    firebase.auth().signOut() 
     .then(() => {window.location.href = '/'}); 

+0

हाय, आप इस समस्या को हार्ड रीफ़्रेश के अलावा अन्य के लिए एक समाधान मिला? – user482594

+0

@ उपयोगकर्ता 482594 नहीं; एक बार मुझे यह ठीक होने के बाद मैंने उस पर काम करना बंद कर दिया। – hboo

+0

मैंने इस बारे में Google फ़ायरबेस समर्थन टीम से संपर्क किया (केस: 0-7351000018196), और उन्होंने कहा कि यह एक अपेक्षित व्यवहार है .. wtf? उनके अनुसार, ऐप से उपयोगकर्ताओं को लॉग इन करने के लिए जिन्होंने फेसबुक के साथ शुरुआत में साइन इन किया था, ऐप को ऐसा करने के लिए फेसबुक एसडीके का उपयोग करने की आवश्यकता होगी। ऐसा नहीं है फायरबेस! – user482594

उत्तर

0

getRedirectResult() संसाधित होने पर पता लगाने के लिए ध्वज का उपयोग करें। अर्थात

firebase.auth().getRedirectResult() 
    .then((result) => { 
    return result.user; 
    }).then((user) => { 
    if (this.authRedirected) 
     return; // Skip 

    // Do stuff. 

    this.authRedirected = true; // Mark redirected 
    }); 
संबंधित मुद्दे