亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Java 中解碼 Firebase 令牌

在 Java 中解碼 Firebase 令牌

一只斗牛犬 2022-06-04 15:10:39
我正在嘗試在后端驗證/解碼令牌,然后從解碼的令牌中檢索用戶 UID。令牌由客戶端生成為字符串。后端成功地將數據檢索/設置到 Firebase,這讓我相信 Firebase 正在正確初始化,所以這不是問題。但是,在運行時,似乎存在導致崩潰的錯誤。代碼:public static void main(String[] args) throws IOException, ExecutionException, InterruptedException, FirebaseAuthException {        File credentialsFile = getFile();        FileInputStream serviceAccount = new FileInputStream(credentialsFile);        FirebaseOptions options = new FirebaseOptions.Builder()                .setCredentials(GoogleCredentials.fromStream(serviceAccount))                .setDatabaseUrl("***")                .build();        FirebaseApp.initializeApp(options);        String idToken = "***";        //LINE 43 IS BELOW        FirebaseToken decodedToken = FirebaseAuth.getInstance().verifyIdToken(idToken);        String uid = decodedToken.getUid();        System.out.println("UID: " + uid);    }錯誤:Exception in thread "main" java.lang.IllegalArgumentException    at com.google.api.client.repackaged.com.google.common.base.Preconditions.checkArgument(Preconditions.java:108)    at com.google.api.client.util.Preconditions.checkArgument(Preconditions.java:37)    at com.google.api.client.json.webtoken.JsonWebSignature$Parser.parse(JsonWebSignature.java:599)    at com.google.firebase.auth.FirebaseToken.parse(FirebaseToken.java:44)    at com.google.firebase.auth.FirebaseAuth$4.execute(FirebaseAuth.java:484)    at com.google.firebase.auth.FirebaseAuth$4.execute(FirebaseAuth.java:477)    at com.google.firebase.internal.CallableOperation.call(CallableOperation.java:36)    at com.google.firebase.auth.FirebaseAuth.verifyIdToken(FirebaseAuth.java:441)    at com.google.firebase.auth.FirebaseAuth.verifyIdToken(FirebaseAuth.java:415)    at App.main(App.java:43)FAILURE: Build failed with an exception.
查看完整描述

1 回答

?
九州編程

TA貢獻1785條經驗 獲得超4個贊

解決方案:


正如hiranya-jayathilaka所指出的,問題在于從客戶端生成令牌的方式。這就是我生成令牌的方式:


String idToken = FirebaseInstanceId.getInstance().getToken();

這是根據文檔生成的方式:


FirebaseUser mUser = FirebaseAuth.getInstance().getCurrentUser();

            mUser.getIdToken(true)

                    .addOnCompleteListener(new OnCompleteListener<GetTokenResult>() {

                        public void onComplete(@NonNull Task<GetTokenResult> task) {

                            if (task.isSuccessful()) {

                                String idToken = task.getResult().getToken();

                                // Send token to your backend via HTTPS

                                // ...

                            } else {

                                // Handle error -> task.getException();

                            }

                        }

                    });


查看完整回答
反對 回復 2022-06-04
  • 1 回答
  • 0 關注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號