在 Play 商店中发布后,Google 身份验证不起作用

Posted

技术标签:

【中文标题】在 Play 商店中发布后,Google 身份验证不起作用【英文标题】:Google authentication is not working after publishing in play store 【发布时间】:2018-11-12 20:24:36 【问题描述】:

将应用程序上传到 google play 后,google 手机身份验证不起作用。以下是我在 logcat 中遇到的错误。

此应用无权使用 Firebase 身份验证。请确认在 Firebase 控制台中配置了正确的包名称和 SHA-1。

我在 stack-overflow 上阅读的大多数答案都告诉我“SHA1 密钥对于签名的 apk 是不同的。所以你有两个 SHA1,一个用于调试和发布版本。发布版本的 SHA1 可以从密钥库文件中获得。”

这些答案不能解决我的问题。这是我到目前为止所做的。

我在 google firebase 控制台中添加了调试和发布 SHA1 密钥。

下载了新的 google-services.json 文件并在投影文件夹中替换为旧文件。

android studio 生成签名的 apk。

如果我在手机中手动安装 apk,调试版和发布版的 apk 都可以正常工作。

但如果我将发布的版本上传到 google play 进行 beta 测试,它会给我 App 验证失败 错误。

我还确认 SHA1 在 Google Play 控制台和 Firebase 控制台的“应用签名”中是相同的。

请帮忙。

这里是 build.gradle

plugins 
    id 'com.onesignal.androidsdk.onesignal-gradle-plugin' version '0.8.1'

apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'
apply plugin: 'com.android.application'

android 
    compileSdkVersion 27
    buildToolsVersion '27.0.3'
    defaultConfig 
        applicationId "-----"
        minSdkVersion 15
        targetSdkVersion 27
        useLibrary 'org.apache.http.legacy'
        versionCode 7
        versionName "1.0"
        multiDexEnabled true
        manifestPlaceholders = [onesignal_app_id               : "---",
                                // Project number pulled from dashboard, local value is ignored.
                                onesignal_google_project_number: "REMOTE"]
    
    dexOptions 
        javaMaxHeapSize "4g"
    
    buildTypes 
        release 
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    

    repositories 
        maven 
            url 'http://dl.bintray.com/amulyakhare/maven'
            maven  url 'https://dl.bintray.com/alexeydanilov/maven' 
        
        maven 
            url 'https://raw.githubusercontent.com/felixb/mvn-repo/master/'
        
        jcenter()
        maven 
            url "https://maven.google.com"
        
        mavenCentral()
    



dependencies 
    compile "com.splitwise:tokenautocomplete:2.0.8@aar"
    compile 'com.googlecode.libphonenumber:libphonenumber:8.4.2'
    compile 'com.viewpagerindicator:viewpagerindicator:2.4.3'
    compile 'com.anjlab.android.iab.v3:library:1.0.44'
    compile 'com.onesignal:OneSignal:[3.9.1, 3.99.99)'
    compile 'com.google.firebase:firebase-auth:15.0.0'
    compile 'com.google.android.gms:play-services-safetynet:15.0.0'
    compile 'com.android.support:design:27.1.1'
    compile 'com.android.support:appcompat-v7:27.1.1'
    compile 'com.github.amlcurran.showcaseview:library:5.4.3'
    compile 'com.android.support:multidex:1.0.3'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'

apply plugin: 'com.google.gms.google-services'

【问题讨论】:

Google sign in not working after publishing in play store的可能重复 我已经检查了那里的答案并在我的问题中解释了为什么我要重新发布类似的问题 能否请您也添加grandle文件? 这件事发生在我身上。我所做的是我拿走了我的项目的release SHA-1 fingerprint 键并创建了新的OAuth in google developer console for my already existing project with this new fingerprint and package name。完成后,这将更新Firebase 中的google-services.json 文件。您只需 download that updated json file from firebase project settings 并将该文件添加到您的 android 项目并创建发布版本。 我已经验证了调试和发布 oauth_client id 都是由谷歌在 google-services.json 中自动添加的。在控制台的 OAuth 2.0 部分中,两个客户端也是由 google 自动创建的。 【参考方案1】:

我们的应用最近遇到了这个问题,该应用与 Firebase 身份验证集成。

APK 运行正常,电话号码的 OTP 也正常发送。 但是,从 Google Play 下载的同一个 APK 无法正常工作,因为电话号码的 OTP 没有出现。

如上所述,此问题的原因是:我们使用 Google Play 签署了我们的应用程序,该应用程序使用新的 SHA-1 指纹对其进行了签名。

现在,您可以将此 SHA-1 添加到您的 Firebase 项目概述 > 添加指纹。 这使我们的 Google Play 应用程序开始工作。

【讨论】:

正确答案 Pati 但我觉得如果您演示如何导航到 SHA1 会更好。 ***.com/questions/39318370/… 也可能重复【参考方案2】:

如果您已经添加了 sha 1 和 all 然后请检查 Android 设备 api 是否处于活动状态并请激活它https://console.cloud.google.com/apis/library/androidcheck.googleapis.com

【讨论】:

请阅读https://meta.stackexchange.com/questions/7656/how-do-i-write-a-good-answer-to-a-question

以上是关于在 Play 商店中发布后,Google 身份验证不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何以开发者身份隐藏 Google Play 商店中的应用

是否可以在Google Play商店中设置发布日期?

根据 Google Play 商店在应用程序中正确的主机名验证器

如何使用适用于 android 的 google play 游戏服务实现后端服务器身份验证

如何通过用于下载应用程序的 Google Play 商店帐户获取 Firebase 用户?

语言更改在上传到 Google Play 商店之前有效,但在上传到 Play 商店后无效。为啥?