Загадочная ошибка Вход в Google из приложения для Android - PullRequest
0 голосов
/ 01 октября 2019

У меня есть приложение, которое использует 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();
}
...