Для создания пользовательских токенов Firebase я использую стороннюю библиотеку JWT (https://github.com/jwtk/jjwt)
. В этой библиотеке есть возможность добавить пользовательские утверждения токенов Firebase, такие как (alg, iss, sub, aud)., и т. д.)
Вся информация о пожарной базе доступна на https://firebase.google.com/docs/auth/admin/create-custom-tokens#create_custom_tokens_using_a_third-party_jwt_library
private_key = "----- НАЧАТЬ ЧАСТНЫЙ КЛЮЧ -----... -----END PRIVATE KEY ----- ";
Я передал закрытый ключ в методе signWith с кодированием в base64
val encodeKey = Base64.encode(privateKey.toByteArray(), android.util.Base64.DEFAULT) val jwt = Jwts.builder().setIssuer("firebase-adminsdk-kywht@...") .setSubject("firebase-adminsdk-kywht@...") .setAudience("https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit") .setExpiration(calendar.time) //a java.util.Date .setIssuedAt(Date()) .setId(UUID.randomUUID().toString())signWith(SignatureAlgorithm.RS512 ,encodeKey).compact()
Я использовал приведенный выше код, ноэто не сработало. Кто-нибудь знает, как передать закрытый ключ для создания токена?
Во-первых, вы случайно пропустили точку в своем коде или нет, так что укажите, что параметры для signWith () неверны, т. Е. Первый параметр является ключевым, а второй - алгоритмом подписи. попробуйте это:
val encodeKey = Base64.encode(privateKey.toByteArray(), android.util.Base64.DEFAULT) val jwt = Jwts.builder().setIssuer("firebase-adminsdk-kywht@...") .setSubject("firebase-adminsdk-kywht@...") .setAudience("https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit") .setExpiration(calendar.time) //a java.util.Date .setIssuedAt(Date()) .setId(UUID.randomUUID().toString()) .signWith(encodeKey, SignatureAlgorithm.RS512) //changed here .compact()