Возникли проблемы при генерации 11 хеш-ключей, которые приведены в официальной документации по SMS Retriever API - PullRequest
0 голосов
/ 20 февраля 2019

мой apk работает нормально в режиме отладки.но когда я подписал apk в режиме релиза, автоматическое sms retrivr не работает.

, тогда я ищу и обнаружил, что должен сгенерировать ключ хеша в официальной документации https://developers.google.com/identity/sms-retriever/verify#generating_a_one-time_code

, где я нашел дваметоды 1> по сигнатуре помогли классу - я использовал, но не работал 2> секунду с помощью следующей команды

keytool -exportcert -alias MyAndroidKey -keystore MyProductionKeys.keystore |xxd -p |tr -d "[: space:]" |echo -n com.example.myapp cat |sha256sum |tr -d "[: space:] -" |xxd -r -p |base64 |cut -c1-11

но я получил команду xxd не найдена

затем я выполняю поиск в стеке, затем запускаю команду при запуске команды git bash, но этот хэш-ключ все еще не работает

1 Ответ

0 голосов
/ 20 февраля 2019

Было бы проще сгенерировать хеш с помощью этого кода.

Просто позвоните ниже строки и напечатайте свою подпись.

ArrayList<String> sigList = (new AppSignatureHelper(this)).getAppSignatures()

Код ссылки: https://github.com/googlesamples/android-credentials/blob/master/sms-verification/android/app/src/main/java/com/google/samples/smartlock/sms_verify/AppSignatureHelper.java

Обновление:

Хеш-код для версии отладки и выпуска будет отличаться.Убедитесь, что вы используете определенный хэш-код приложения для сообщения otp с необходимым форматом.

AppSignatureHelper предоставит хэш-код, с помощью которого apk подписан.Создайте apk релиза и напечатайте хеш-код в журнале, чтобы получить хеш-код конкретного релиза.

Обновление:

Другой подход к генерации с помощью команды, упомянутой в: https://developers.google.com/identity/sms-retriever/verify#computing_your_apps_hash_string

Однако, если вы используете Windows, он может не работать, поскольку у вас нет бинарной (команды), такой как xxd или tr.в этом случае вы должны загрузить эти exe-файлы из другого места.

Если вы используете git, вы можете найти их в "C: \ Program Files \ Git \ usr \ bin \", в этом случае выполнитеэто шаги.

  1. Добавьте путь "C: \ Program Files \ Git \ usr \ bin \" в переменные среды.
  2. Перезапустите командную строку.поэтому xxd и tr начинают работать в командной строке.
  3. применить указанную команду в ссылке.

keytool -exportcert -alias MY_ANDROID_KEY -keystore MY_PRODUCTION_KEY | xxd -p | tr -d "[:space:]" | echo -n MY_PACKAGE_NAME cat | sha256sum | tr -d "[:space:]-" | xxd -r -p | base64 | cut -c1-11

Где в команде

  • замените MY_ANDROID_KEY вашим псевдонимом ключа
  • замените MY_PRODUCTION_KEY на вашпуть к хранилищу ключей (некоторые xyz.jks)
  • замените MY_PACKAGE_NAME именем вашего пакета

  • вы получите 11-значный ключ хеша.Ура.

Здесь, если вы столкнулись с ошибкой вроде tr: write error: Illegal seek, вы можете вызвать cammand до tr как ->

keytool -exportcert -alias MY_ANDROID_KEY -keystore MY_PRODUCTION_KEY | xxd -p | tr -d "[:space:]"

в этом случае вы получите строку длиной более 1800 символов.передайте пакет и строку подписи методу хэша AppSignatureHelper, он вернет ваш ключ.

(Здесь, если в конце вы используете AppSignatureHelper, я предлагаю использовать только этот первый подход)

...