Android 一键登录,生成的 ID Token 中缺少 nonce

问题描述

根据文档setNonce

我希望随机数将作为 IDToken 的声明包含在内,但是,在使用以下代码设置随机数后:

      oneTapClient = Identity.getSignInClient(getContext());
        BeginSignInRequest signInRequest = BeginSignInRequest.builder()
                .setGoogleIdTokenRequestOptions(BeginSignInRequest.GoogleIdTokenRequestOptions.builder()
                        .setSupported(true)
                        .setServerClientId(clientId)
                        .setNonce("5qb6kvo0q8drrzs50dkv5uzci1ft7p1")
                        .setFilterByAuthorizedAccounts(false)
                        .build())
                .build();

并从以下位置获取 id 令牌:

SignInCredential credential = null;
            try {
                credential = oneTapClient.getSignInCredentialFromIntent(data);
                String idToken = credential.getGoogleIdToken();
               
            } catch (ApiException e) {
               ...
            }

解码返回的idToken,nonce丢失。

这是缺陷吗?还是我错过了什么?

此外,在文档 Verify the integrity of the ID token 中,它没有提到 ID Token Validation 下定义的 nonce 验证

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...