10

Tôi hơi bối rối trước một số hành vi mà tôi thấy với Firebase. Tôi không bao giờ sử dụng phiên bản cũ, nhưng tôi tin rằng getRedirectResult là mới kể từ khi họ tham gia lực lượng với Google.Firebase getRedirectResult đang được gọi sau khi đăng xuất

Tôi có SPA mà tôi đang sử dụng Vue.js với vue-router và Firebase cho. Có một trang đích và một chế độ xem khác mà người dùng có thể đăng nhập hoặc không. Đăng nhập được thực hiện bằng chuyển hướng. Khi khung nhìn thứ hai này được tải, tôi kiểm tra getRedirectResult trong móc 'kích hoạt' của vue-router, và nếu có người dùng, hãy làm một số thứ khác với thông tin người dùng.

Sự cố xảy ra như vậy:
1. Chúng tôi đang ở trang thứ hai. Người dùng đăng nhập. GetRedirectResult được gọi và tìm người dùng. Yay.
2. Người dùng đăng xuất. Chúng tôi trở lại trang đích.
3. Chúng tôi nhấp vào nút dẫn chúng tôi đến trang thứ hai. getRedirectResult được gọi và tìm người dùng trước đó. Gì?! Không!

Tôi không thể tìm thấy bất cứ điều gì về việc tôi thiếu gì đó và cần một số loại kiểm tra bổ sung hay bằng cách nào đó buộc phải làm mới trang sau khi đăng xuất để quên người dùng cuối cùng đã đăng nhập hoặc nếu điều này được coi là một lỗi. Bất kỳ sự trợ giúp nào cũng sẽ được đánh giá cao!

gọi getRedirectResult trên trang thứ hai trong bộ định tuyến phần vue 'kích hoạt' móc:

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

Cập nhật: giải quyết bằng cách làm một refresh trang cứng trong callback logout, như sau:

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

+0

Hi, Bạn đã tìm thấy một giải pháp cho vấn đề này không phải là làm mới cứng? – user482594

+0

@ user482594 nope; Tôi ngừng làm việc trên nó một khi tôi thấy rằng sửa chữa. – hboo

+0

Tôi đã liên hệ với nhóm hỗ trợ Google Firebase về trường hợp này (trường hợp: 0-7351000018196) và họ cho biết đây là hành vi mong đợi .. wtf? Theo họ, để đăng nhập người dùng từ ứng dụng ban đầu đã đăng nhập bằng Facebook, ứng dụng sẽ cần phải sử dụng Facebook SDK để làm như vậy. Đó không phải là firebase! – user482594

Trả lời

0

Sử dụng cờ để phát hiện xem getRedirectResult() đã được xử lý chưa. ví dụ:

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

    // Do stuff. 

    this.authRedirected = true; // Mark redirected 
    }); 
Các vấn đề liên quan