【问题标题】:FirebaseAuth JAVA (Spring boot) verify tokenFirebaseAuth JAVA (Spring boot) 验证令牌
【发布时间】:2018-01-17 07:17:24
【问题描述】:

问候。 我正在使用自定义现有后端(Spring Boot)为我的移动应用程序实施 Firebase 身份验证。 我通过在移动应用程序中使用 firebase 成功在 facebook 中进行身份验证 => 想要将用户信息存储在我的后端数据库(不是 firebase)。

卡住调试令牌验证错误。

令牌验证 - 几乎与谷歌文档中的相同:

   try {
        FirebaseToken decodedToken = Tasks.await(
                FirebaseAuth.getInstance().verifyIdToken(info.getToken()));
    } catch (ExecutionException | InterruptedException | IllegalArgumentException e) {
        logger.error(e.getMessage());
    }

收到错误:java.lang.IllegalArgumentException

并且无法找出/调试导致它的原因。

相关 - firebase 配置:

@Configuration
public class FirebaseConfig {

    private final static Logger logger = LogManager.getLogger(FirebaseConfig.class.getName());

    @Value("classpath:firebase_config.json")
    private Resource firebase_config;

    @PostConstruct
    public void init() throws IOException {

        FileInputStream serviceAccount = new FileInputStream(firebase_config.getFile());

        FirebaseOptions options = new FirebaseOptions.Builder()
                .setCredential(FirebaseCredentials.fromCertificate(serviceAccount))
                .setDatabaseUrl("https://******-81233.firebaseio.com")
                .build();
        FirebaseApp.initializeApp(options);
        logger.info("Firebase init done");
    }
}

更新: 补充:

FirebaseAuth.getInstance().verifyIdToken(info.getToken()).addOnFailureListener(e -> {
                    System.err.println("Error verifying token: " + e.getMessage());
                });

我得到的错误只是null,它没有说明它的起源。

【问题讨论】:

  • 首先,请添加整个回溯。您可以使用Tasks.await( FirebaseAuth.getInstance().verifyIdToken(info.getToken())); 让请求失败,或者使用FirebaseAuth.getInstance().verifyIdToken(info.getToken()).addOnFailureListener(Throwable::printStackTrace); 显式打印它
  • 然后确保您的令牌与格式匹配。您可以查看com.google.api.client.json.webtoken.JsonWebSignature$Parser.parse 方法(我的源代码中的 JsonWebSignature.java:599) - 它包含一个前置条件检查,如果令牌不包含点,它将失败并显示 IllegalArgumentException 和 null 消息

标签: java spring firebase firebase-authentication


【解决方案1】:

构建发布 APK 版本。部署并重试。哈希值会有所不同,因此它可能会有所帮助。

【讨论】:

    猜你喜欢
    • 2021-09-04
    • 1970-01-01
    • 2017-09-13
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多