2015-07-20 32 views
13

Chúng tôi đang làm việc trên ứng dụng iOS đang sử dụng Google để xác thực với Firebase. Theo số https://www.firebase.com/docs/ios/guide/user-auth.html#section-login Firebase cho biết mã thông báo xác thực sẽ hết hạn sau mỗi 24 giờ. Chúng tôi đang tự hỏi, nếu kịch bản sau đây là điều chúng ta cần phải xem xét:Yêu cầu xác thực lại Firebase

  1. tài khoản xác thực với Google và căn cứ hỏa lực
  2. ứng dụng của chúng tôi được một auth thẻ căn cứ hỏa lực này hết hạn trong 24 giờ
  3. dùng đóng ứng dụng iOS
  4. 1 phút trước khi mã thông báo xác thực Firebase hết hạn, người dùng mở lại ứng dụng
  5. Một phút sau, chúng tôi đưa ra yêu cầu cho Firebase. Mã thông báo xác thực đã hết hạn.

Dường như chúng tôi phải xác thực lại với Firebase bằng cách quan sát các thay đổi xác thực trên mỗi https://www.firebase.com/docs/ios/guide/user-auth.html#section-monitoring-authentication. Nhưng liệu chúng tôi có phải phát hành lại yêu cầu tương tự cho Firebase từ # 5 ở trên không? Cũng có vẻ như chúng ta có thể xác thực lại trong cancelBlock:

[ref observeEventType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) { 
    NSLog(@"%@", snapshot.value); 
} withCancelBlock:^(NSError *error) { 
    NSLog(@"%@", error.description); 
    // reauthenticate and then re-issue request? 
}]; 

này sẽ không được lý tưởng vì chúng ta sẽ phải viết mã này ở khắp mọi nơi mà chúng ta thực hiện một yêu cầu.

Thực tiễn tốt nhất để giải quyết tình huống này là gì? Firebase có tự động làm mới mã thông báo xác thực khi nó hết hạn không?

+1

Lưu ý: mặc định là 24 giờ nhưng bạn có thể thay đổi điều này trong tab Đăng nhập & Xác thực trong Thời lượng phiên – sjm

+0

Điều đó là chính xác. Tuy nhiên, bất kể khoảng thời gian nào, câu hỏi đặt ra là liệu sẽ có thời điểm khi mã thông báo google oauth hợp lệ nhưng mã thông báo firebase hết hạn. Thử nghiệm của chúng tôi với thời gian chờ của Firebase 30 giây dường như cho thấy rằng chúng tôi phải làm mới mã thông báo xác thực Firebase theo cách thủ công – vjy

+1

Bạn phải làm mới mã thông báo xác thực theo cách thủ công. Bạn có thể theo dõi [.info/authenticated] (https://www.firebase.com/docs/ios/guide/user-auth.html#section-monitoring-authentication) để phát hiện trạng thái thay đổi - câu trả lời hay hơn là hủy gọi lại. – Kato

Trả lời

0

Rõ ràng, câu hỏi liên quan đến phiên bản cũ của Firebase và SDK của nó. Phiên bản hiện tại của Firebase (3.X) giúp bạn dễ dàng hơn vì Firebase ghi nhớ cách người dùng đăng nhập lần cuối vào ứng dụng của bạn.

Vì vậy, bạn chỉ cần gọi FIRApp.configure() như thường lệ, ví dụ: trong application: didFinishLaunchingWithOptions launchOptions: của bạn và sau đó thêm một người biết lắng nghe nhà nước cũng tại buổi ra mắt của ứng dụng của bạn như

FIRAuth.auth()?.addStateDidChangeListener() { (auth, firUser) in 
// do something with firUser, e.g. update UI 
} 

Người nghe sẽ tự động được gọi xung quanh thời điểm ra mắt ứng dụng của bạn bằng cách căn cứ hỏa lực bất cứ khi nào một cái gì đó thay đổi về người dùng của bạn và các thẻ là được xử lý trong nền bởi Firebase, nghĩa là bạn không phải xử lý các mã thông báo đã hết hạn. (Nó có thể phức tạp hơn nếu bạn sử dụng Custom Auth System).

Các vấn đề liên quan