Подписанный вами отпечаток пальца уже используется другим клиентом OAuth2 для Android

Некоторое время назад я создал примерный проект (назовите его "пример проекта" ) с помощью Oauth2 client id для приложения для Android в консоли Google API. Я также добавил SHA1 fingerprint и имя пакета (например, com.package.name).

Моя ошибка заключалась в том, что приложение с таким же именем пакета уже существует. Теперь мне нужно создать приложение Oauth2 client id для android в "действительном проекте" с именем пакета com.package.name и с SHA1 fingerprint, которое я добавил ранее. Очевидно, когда я попытался добавить этот отпечаток, у меня появилась ошибка.

The signing fingerprint you specified is already used by another Android OAuth2 client.

После этого я вспомнил о "примерном проекте" и удалил client id из этого проекта. Проблема в том, что я до сих пор не могу добавить этот отпечаток для имени пакета com.package.name. client id удаляется, но все же я имею ту же ошибку, что и выше.

У меня есть возможность использовать этот отпечаток для одного и того же имени пакета в другом проекте?

Ответ 1

Эта ошибка возникает, когда существует существующий SIGNING CERTIFICATE FINGERPRINT (SHA1) в Google Developers, связанный с другой учетной записью.

Решение состоит в том, чтобы удалить проект, который использует SHA1 в console.developers.google.com для старого/неправильного проекта.

Вы не можете изменить отпечаток SHA1 после его установки. Помните, что для удаления проекта требуется 7 дней, чтобы полностью удалить его.

Другой вариант - удалить debug.keystore и сгенерировать новый с помощью

keytool -genkey -v -keystore debug.keystore -alias androiddebugkey
-storepass android -keypass android -keyalg RSA -validity 14000

Помните, что вам нужно удалить приложение, иначе вы получите ошибку [INSTALL_FAILED_UPDATE_INCOMPATIBLE].

Ответ 2

Если вы используете каждый проект firebase для каждого env, как я, может оказаться полезным подход ниже.

В вашей сборке gradle создайте новый идентификатор приложения для каждого env:

productFlavors {
        dev {
            applicationId "se.abc.dev"
        }
        stag {
            applicationId "se.abc.stag"
        }
        prod
    }

В каждом проекте firebase добавьте новый проект с соответствующим идентификатором приложения с тем же отпечатком пальца. Не забудьте загрузить новый json файл службы google с момента изменения идентификатора приложения. Имя пакета остается таким же, поэтому при загрузке в игру Google это не будет проблемой. Но, конечно же, я оставляю аромат prod пустым, поэтому имя пакета и идентификатор приложения будут одинаковыми для выпуска prod, чтобы избежать проблем.

Ответ 3

Как кто-то может захотеть использовать одно и то же приложение через два или несколько проектов с использованием firebase по многим причинам, и поэтому получите эту ошибку, я здесь рассматриваю этот конкретный сценарий. Самый простой способ запуска одного и того же приложения на двух или более различных проектах firebase (например, производство и постановка) заключается в том, чтобы добавить к вашему модулю build.gradle файл вариант сборки (предположим, этап), как этот:

apply plugin: 'com.android.application'
apply plugin: 'com.google.firebase.firebase-perf'

android {
    compileSdkVersion 27
    buildToolsVersion "27.0.3"
    defaultConfig {
        applicationId "com.mydomain.myapp"
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 18
        versionName "2.8"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        staging {
            initWith debug
            applicationIdSuffix ".staging"
            versionNameSuffix = "-staging"
        }
    }
}

dependencies {
    [...]
}

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

В варианте сборки staging наиболее важной является строка:

applicationIdSuffix ".staging"

Это приведет к тому, что во время сборки будет добавлен суффикс ".staging" к вашему идентификатору приложения, чтобы вы автоматически имели

applicationId "com.mydomain.myapp.staging"

Вам нужно добавить это приложение ("com.mydomain.myapp.staging") в проект промежуточной установки firebase, и вы сможете добавить в это приложение те же "com.mydomain.myapp" SHA1, потому что у него другое идентификатор приложения.

Ответ 4

  Указанный вами отпечаток подписи уже используется другим Android-клиент OAuth2

Я должен проверить каждый проект и попытаться найти другой идентификатор клиента, настроенный с использованием отпечатка пальца SHA1 и имени пакета, который я попытался настроить, но безуспешно.

В конце концов решением было удалить идентификатор клиента, который я пытался отредактировать, и снова добавить его с отпечатком SHA1 и именем пакета, у меня это сработало.

enter image description here

Ответ 5

Столкнулся с этим вопросом сегодня. Поскольку для полного удаления проекта требуется много времени, самый простой способ - создать новый SHA1, просто удалив локальное debug.keystore. Он автоматически генерируется при запуске любого приложения после его удаления. Это описано в документации по Android здесь.

Ответ 6

Я отмечу, что если ваше приложение занесено в список воспроизведения, вы, вероятно, не хотите менять имя пакета и, возможно, не хотите заменять производственный ключ (так как вы будете вынуждены сделать новый листинг).

Если вы абсолютно уверены, что в настоящее время нет активных проектов, использующих текущую пару имя-пакета /fingerprint, попробуйте еще раз: Создайте совершенно новые учетные данные. Вам придется заменить свой файл учетных данных в приложении.

Я не ожидал, что это поможет, но это помогло. Может быть, Google как-то кеширует поиск? "Этот поиск по названию пакета/отпечатку пальца/идентификатору клиента является дубликатом, так что не ищите его снова".

Ответ 7

Уже поздно, но стоит. Я сделал ту же ошибку. Я добавил проект в firebase с неверной учетной записью, затем удалил и попытался добавить другую учетную запись firebase, но я не смог этого сделать, поскольку ошибка указывает на то, что проект уже зарегистрирован. Таким образом, для полного удаления требуется около 5-7 дней.

Вот шаг, который я сделал, чтобы создать еще один sha1.

  1. Перейдите на .android в моем компьютере. C:.\Users\shahz.android
  2. удалить debug.keystore.
  3. восстановить проект Android.
  4. нажмите на отчет о подписи (правая боковая панель щелкает, приложение/задача /Android/siginingReport)

  5. вы получите новый ключ отладки с новым sha1.

  6. зарегистрируйте свое приложение.