Похоже, проблема связана с анализом JSON служебного аккаунта или созданием объекта GoogleCredentials. Вот несколько дополнительных шагов и рекомендаций по устранению этой неполадки:
- Проверьте целостность JSON:
Убедитесь, что JSON вашего сервисного аккаунта заполнен и правильно отформатирован. Предоставленный вами фрагмент сокращен, что может быть частью проблемы. - Конфигурация R8/ProGuard:
При создании APK-версии версии R8 (оптимизатор Android по умолчанию) или ProGuard могут удалить необходимые классы. Вы предоставили некоторые правила ProGuard, но нам, возможно, потребуется добавить больше.
Код: Выделить всё
class GenerateAccessToken @Inject constructor(
@ApplicationContext private val context: Context
) {
private val url = "https://www.googleapis.com/auth/firebase.messaging"
fun generateToken(): String = try {
val key = "{\n" +
" \"type\": \"service_account\",\n" +
" \"project_id\": \"resea\",\n" +
" \"private_key_id\": \"6b78ce638b9decfd3db74e33c5632b87aaf7b0d5\",\n" +
" \"private_key\": \"-----BEGIN PRIVATE KEY-----\\nM\\n-----END PRIVATE KEY-----\\n\",\n" +
" \"client_email\": \"firebase-adminsdk-ph923@researchhub-21392.iam.gserviceaccount.com\",\n" +
" \"client_id\": \"\",\n" +
" \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n" +
" \"token_uri\": \"https://oauth2.googleapis.com/token\",\n" +
" \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n" +
" \"client_x509_cert_url\": \"https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-ph923%40researchhub-21392.iam.gserviceaccount.com\",\n" +
" \"universe_domain\": \"googleapis.com\"\n" +
"}"
Log.d("AAA", key)
val credential = GoogleCredentials.fromStream(key.byteInputStream()).createScoped(url)
credential.refreshIfExpired()
Log.d("AAA", credential.accessToken.tokenValue)
credential.accessToken.tokenValue
} catch (e: Exception) {
Log.e(TAGS.ERROR.name, "generateToken: $e")
""
}
}
Код: Выделить всё
generateToken: java.lang.IllegalArgumentException:
Вот мой прогаурд
Код: Выделить всё
-keep class com.google.gson.reflect.TypeToken { *; }
-keep class * extends com.google.gson.reflect.TypeToken
-keepattributes AnnotationDefault,RuntimeVisibleAnnotations
-keepattributes Signature
-keepclassmembers class * {
@com.google.gson.annotations.SerializedName ;
}
-keep class com.atech.core.model.** { *; }
-keep class com.atech.core.utils.JsonKt { *; }
-keep class com.google.auth.oauth2.** { *; }
-keep class org.apache.http.** { *; }
-dontwarn org.apache.http.**
##---------------Begin: proguard configuration for Gson ----------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature
# For using GSON @Expose annotation
-keepattributes *Annotation*
# Gson specific classes
-keep class com.google.gson.stream.** { *; }
# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { *; }
Подробнее здесь: https://stackoverflow.com/questions/787 ... omstream-i
Мобильная версия