10

Tôi gặp sự cố với Xác thực Firebase của Android bằng cách sử dụng com.google.gms:google-services:3.0.0com.google.firebase:firebase-auth:9.0.1.Xác thực Android Firebase không thành công: expired_token (Mã thông báo xác thực đã hết hạn)

1 giờ sau khi xác thực với căn cứ hỏa lực (Google hay Facebook), tôi nhận được lỗi sau:

W/PersistentConnection: pc_0 - Authentication failed: expired_token (Auth token is expired)

Tại sao căn cứ hỏa lực thẻ hết hạn sau 1 giờ và làm thế nào để kéo dài thời gian hết hạn này?

CẬP NHẬT

tôi vẫn gặp phải vấn đề này, căn cứ hỏa lực thẻ hết hạn sau 1 giờ. Bây giờ tôi nhận được thông báo sau: W/PersistentConnection: pc_0 - Authentication failed: invalid_token (Invalid claim 'kid' in auth header.)

Tôi đánh giá cao bất kỳ trợ giúp nào.

+0

Xin chào, tôi đang sử dụng firebase-auth: 9.0.2 và tôi cũng gặp vấn đề tương tự. Bạn đã tìm thấy một giải pháp, xin vui lòng? – Allan

+0

Bạn đã tìm thấy giải pháp cho nó chưa? Tôi vẫn đang đối mặt với vấn đề này. –

Trả lời

0

Cố gắng triển khai FirebaseInstanceIdService để nhận mã thông báo làm mới.

Truy cập đăng ký thẻ:

Bạn có thể truy cập giá trị của mã thông báo bằng cách mở rộng FirebaseInstanceIdService. Hãy chắc chắn rằng bạn đã thêm dịch vụ để manifest của bạn, sau đó gọi getToken trong bối cảnh onTokenRefresh, và đăng nhập các giá trị như:

@Override 
public void onTokenRefresh() { 
    // Get updated InstanceID token. 
    String refreshedToken = FirebaseInstanceId.getInstance().getToken(); 
    Log.d(TAG, "Refreshed token: " + refreshedToken); 

    // TODO: Implement this method to send any registration to your app's servers. 
    sendRegistrationToServer(refreshedToken); 
} 

The onTokenRefreshcallback fires whenever a new token is generated, so calling getToken in its context ensures that you are accessing a current, available registration token. FirebaseInstanceID.getToken() returns null if the token has not yet been generated.

Code:

import android.util.Log; 

import com.google.firebase.iid.FirebaseInstanceId; 
import com.google.firebase.iid.FirebaseInstanceIdService; 


public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService { 

    private static final String TAG = "MyFirebaseIIDService"; 

    /** 
    * Called if InstanceID token is updated. This may occur if the security of 
    * the previous token had been compromised. Note that this is called when the InstanceID token 
    * is initially generated so this is where you would retrieve the token. 
    */ 
    // [START refresh_token] 
    @Override 
    public void onTokenRefresh() { 
     // Get updated InstanceID token. 
     String refreshedToken = FirebaseInstanceId.getInstance().getToken(); 
     Log.d(TAG, "Refreshed token: " + refreshedToken); 

     // TODO: Implement this method to send any registration to your app's servers. 
     sendRegistrationToServer(refreshedToken); 
    } 
    // [END refresh_token] 

    /** 
    * Persist token to third-party servers. 
    * 
    * Modify this method to associate the user's FCM InstanceID token with any server-side account 
    * maintained by your application. 
    * 
    * @param token The new token. 
    */ 
    private void sendRegistrationToServer(String token) { 
     // Add custom implementation, as needed. 
    } 
} 

Tôi hy vọng nó giúp bạn.

+0

Cảm ơn bạn @pRaNaY, tôi sẽ thử điều đó. Tại sao điều này không được đề cập trong tài liệu Xác thực Firebase? Bảng điều khiển Firebase cũ được phép đặt khoảng thời gian hết hạn bằng mã thông báo theo cách thủ công, giờ đây tôi không thể tìm thấy tùy chọn này nữa. Mã thông báo – kandroid

+0

được mô tả ở đây là mã thông báo đăng ký thiết bị cho FCM - https://firebase.google.com/docs/cloud-messaging/android/client –

+0

Đây không phải là mã thông báo xác thực. Đây là mã thông báo fcm.Cả hai đều hoàn toàn khác nhau! – kirtan403

0

Thời lượng tối đa mới cho Thẻ Firebase là 1 giờ - tôi đã đọc nó trong tài liệu sớm hơn hôm nay.

Đối với Xác nhận quyền sở hữu 'đứa trẻ' không hợp lệ trong tiêu đề xác thực., tôi nhận được chính xác 2 kết quả tìm kiếm trên Google cho điều đó (: Không có tài liệu nào liên quan đến kid trong tài liệu Firebase. Tôi đoán chúng tôi sẽ phải chờ câu trả lời từ Google (hoặc chuyển về phiên bản cũ của Firebase nếu có thể).

2

Nếu chúng ta sử dụng các nhà cung cấp mặc định Auth như (Google, Facebook, Email ..), cập nhật "chìa khóa SHA-1" của ứng dụng của bạn trong giao diện điều khiển căn cứ hỏa lực sẽ khắc phục vấn đề hết hạn thẻ.

trong discussion này Google nhà phát triển đã chia sẻ hướng dẫn để giải quyết vấn đề này.

Hướng dẫn: https://drive.google.com/file/d/0B94LePkXiqa6SXVFd3N1NzJHX1E/view

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