Доступ / авторизация Google Диска работает только с прямой / отладочной сборкой - PullRequest
0 голосов
/ 09 июля 2020

Некоторое время я пытался диагностировать проблему авторизации с помощью OAuth 2.0, идентификаторов клиентов и доступа к Google API (в частности, Google Drive).

Общая проблема заключалась в том, что все работает только при сборке и работает прямо через USB на моем устройстве. Я не буду go подробно рассказывать о реальном коде - поскольку я сделал это в другом месте здесь - так что я могу сосредоточиться на текущем моменте, который (надеюсь) укажет кому-то более умному, чем я, на что проблема есть.

  1. Первоначально у меня была проблема с невозможностью заставить работать авторизацию Google Диска при разработке на моем устройстве. Затем я понял, что это потому, что Android Studio подписывает отладочный APK своим собственным debug.keystore, поэтому я перешел на панель управления учетными данными API Google и создал дополнительные учетные данные OAuth2 для своего пакета приложения и хранилища ключей отладки (т. Е. В дополнение к существующие для пакета приложения и моего хранилища ключей выпуска). Вроде отлично работает.

  2. За исключением пакетов выпуска, развернутых в Google Play, не работали. Им не удалось получить авторизацию даже после того, как пользователь выбрал свою учетную запись в потоке авторизации Google.

  3. Моя следующая идея (наконец, после нескольких месяцев попыток) заключалась в том, что мои два набора учетных данных для Один и тот же пакет приложения - один с использованием хранилища ключей отладки Android Studio, а другой - с хранилищем ключей моей версии - находился в конфликте. Итак, я понял, как заставить Android Studio подписывать отладочные сборки, развернутые на моем устройстве, с помощью моего хранилища ключей выпуска, и избавился от учетных данных хранилища ключей отладки на панели инструментов API Google. Вроде все заработало. Думал, что это решило проблему.

  4. Затем, в какой-то момент прошлой ночью, после загрузки того, что, как я надеялся, было фиксированным пакетом в Google Play, мое собственное приложение для устройства обновилось непосредственно из моего развернул отладочную сборку для версии Google Play (потому что коды версий совпадают? и версия Google Play становится предпочтительнее?) и ... теперь она не работает. Я получаю ... ну, обфусцированный поток сообщений W.System.err в logcat, поскольку, по-видимому, это APK Google Play.

  5. Когда я развертываю прямо из Android Studio в мое устройство снова через USB, перезаписывая APK Google Play, тот же код версии, больше ничего не трогал, et c., он работает - по крайней мере, пока Google Play не перезапишет его снова.

( РЕДАКТИРОВАТЬ: Подтверждено ... Я могу вручную запустить обновление в приложении Google Play, и он перезапишет мой только что развернутый через USB и только что работающий отладочный APK с версией Google Play, загруженной вчера, и Google Диск больше не будет работать. )

(РЕДАКТИРОВАТЬ № 2: Я дважды проверил, и учетные данные в консоли API Google используют правильную подпись SHA-1. На самом деле, с тех пор, как я настроил подписку, управляемую Google , кажется, что все три моих локальных сертификата выпуска и сертификат подписи приложений и сертификаты загрузки Google Play одинаковы, поэтому вероятность использования неправильного сертификата очень мала.)

Wh это означает, что единственная версия моего приложения, которая может получить доступ к Google Диску, - это версия, созданная и развернутая непосредственно из Android Studio.

Это что-то очевидное?

Ответы [ 2 ]

1 голос
/ 18 июля 2020

Вы развертываете в Google Play как APK-файл или пакет (.aab)? В последнем случае вы можете попробовать выпустить версию в виде APK, если повторная подпись Google каким-то образом является причиной - хотя я не понимаю, как это могло быть. Обратите внимание: я считаю, что в этом случае вам придется загружать свои символы отдельно.

Вы не можете изменить свои сертификаты подписи для выпущенного приложения, поэтому я бы не стал с ними связываться, но вы можете связаться с Google подписание поддержки, чтобы, по крайней мере, они могли убедиться, что с их стороны нет сбоев в настройке.

0 голосов
/ 17 июля 2020

Когда вы публикуете приложение sh через Google Play и если вы выбрали подписку приложения через Google Play, ключи, которые вы использовали для подписи приложения при создании Android Studio, перезаписываются новым ключом из Google Play.

Вы можете проверить ключи подписи приложений в консоли Google Play в разделе

Release Management -> App Signing

Теперь скопируйте отсюда SHA-256 certificate fingerprint или SHA-1 certificate fingerprint и go в консоль разработчика Google или Google Cloud Console

Проект-> Ключи API-> Идентификаторы клиентов OAuth 2.0 Сопоставьте имя вашего пакета и отпечаток SHA с идентификатором клиента OAUTH.

Если вы используете Firebase и добавили службу Google. json, тогда вы также можете сопоставить отпечаток SHA с вашим приложением через консоль Firebase из

Обзор проекта -> Настройки проекта -> Общие

Прокрутите вниз до своего приложения и добавьте туда свой отпечаток SHA.

...