У меня есть приложение, которое использует oath2 для получения учетных данных пользователя для Google Fit API. Если я устанавливаю версию релиза прямо на устройство, оно работает. Если я устанавливаю через магазин воспроизведения, он возвращает null для GoogleSignIn.getLastSignedInAccount. Это началось после того, как я переключился на версии.
Я перепроверил учетные данные в консоли разработчика. Я убедился, что имя пакета приложения совпадает с тем, что находится в playstore. Я отозвал приложение из учетной записи Gmail, чтобы попытаться вызвать экран авторизации. Я проверил домен.
Есть идеи?
// gradle
apply plugin: 'com.android.application'
android {
buildscript {
ext.java_version = JavaVersion.VERSION_1_8
}
signingConfigs {
release {
def propsFile = file('C:/Users/MyName/AndroidStudioProjects/keystore.properties')
if (propsFile.exists()) {
def props = new Properties()
props.load(new FileInputStream(propsFile))
storeFile = file(props['ANDROID_KEY_PATH'])
storePassword = props['ANDROID_STORE_PASSWORD']
keyAlias = props['ANDROID_KEY_ALIAS']
keyPassword = props['ANDROID_KEY_PASSWORD']
}
}
}
compileSdkVersion 28
defaultConfig {
applicationId "com.mydomain.foo"
minSdkVersion 26
targetSdkVersion 28
versionCode 2
versionName "2.00"
buildConfigField "String", "APP_DOMAIN", "\"silver\""
}
buildTypes {
debug{
debuggable true
versionNameSuffix = '-debug'
}
release {
debuggable false
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
multiDexEnabled = false
versionNameSuffix = '-release'
zipAlignEnabled = true
signingConfig signingConfigs.release
}
}
flavorDimensions "server"
productFlavors {
platinum {
dimension "server"
applicationIdSuffix ".platinum"
buildConfigField "String", "APP_DOMAIN", "\"platinum\""
}
gold {
dimension "server"
applicationIdSuffix ".gold"
buildConfigField "String", "APP_DOMAIN", "\"gold\""
}
silver {
dimension "server"
applicationIdSuffix ".silver"
buildConfigField "String", "APP_DOMAIN", "\"silver\""
}
}
compileOptions {
sourceCompatibility java_version
targetCompatibility java_version
}
bundle {
language {
enableSplit = false
}
}
}
dependencies {
implementation "com.google.android.gms:play-services-fitness:18.0.0"
implementation "com.google.android.gms:play-services-auth:17.0.0"
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.media:media:1.1.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.1.0-alpha10'
implementation 'androidx.work:work-runtime:2.3.0-alpha01'
implementation 'com.android.volley:volley:1.1.1'
implementation 'com.google.code.gson:gson:2.8.5'
implementation fileTree(include: ['*.jar'], dir: 'libs')
}
/////////////
// sign in code
if (!GoogleSignIn.hasPermissions(account, MainActivity.getFitnessOptions())) {
Log.d(TAG, "didTapSyncNowButton google sign in A");
Intent intent = mSignInClient.getSignInIntent();
startActivityForResult(intent, REQUEST_GOOGLE_SIGN_IN_CODE);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == REQUEST_GOOGLE_SIGN_IN_CODE) {
Log.d(TAG, "REQUEST_GOOGLE_SIGN_IN_CODE");
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
if (task.isSuccessful()) {
Log.d(TAG, "REQUEST_GOOGLE_SIGN_IN_CODE SUCCESS");
GoogleSignInAccount account = task.getResult();
applySubscription(account);
}
}
}
public static FitnessOptions getFitnessOptions() {
return FitnessOptions.builder().addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ).addDataType(DataType.AGGREGATE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ).build();
}
public static GoogleSignInOptions getSignInOptions(){
return new GoogleSignInOptions.Builder().addExtension(getFitnessOptions()).build();
}