概要
業務でAndroidの認証コード自動入力(SMS Retriever)を触ったとき、ハッシュ値の作成方法で手間取りました。
自動入力が機能せず、「ハッシュ値の作り方が間違っているのでは?」と疑っていろいろ調べました。
結局は公式に載っている方法で問題ありませんでした。
同じところで時間を無駄にしないため、備忘録として残しておきます。
- Androidの認証コード自動入力には、アプリ固有のハッシュ値が必要
- ハッシュ値の生成は、基本的に公式手順どおりで問題ない
- 実装が動かない場合、ハッシュ値生成手順以外に原因があることも
ハッシュ値作成方法
基本的にこちらの公式の通り進めれば問題ないです。
ハッシュ値の作成には deployment_cert.der が必要です。
作成手順
1. development_cert.derを用意する
Google Play Console から deployment_cert.der をダウンロードしてください。
業務上、ダウンロード権限がない場合は、権限のある担当者に依頼しましょう。
2. コマンドの実行
コマンド1
development_cert.derを置いたディレクトリに移動し、以下のコマンドを実行してください。
keytool -importcert \
-file deployment_cert.der \
-keystore temporary.keystore \
-alias PlayDeploymentCert
コマンド2
keytool -exportcert -alias PlayDeploymentCert -keystore temporary.keystore \
| xxd -p | tr -d "[:space:]" \
| (read cert_hex; echo -n "<YOUR_APPLICATION_ID> ${cert_hex}") \
| sha256sum | tr -d "[:space:]-" \
| xxd -r -p | base64 | cut -c1-11
<YOUR_APPLICATION_ID>は、自分のアプリのパッケージ名に置き換えてください。
このかマンドで生成された値が、自動入力で利用するハッシュ値になります。
SMS本文について
SMS本文についても公式で案内されている形式に沿って作成すれば問題ありません。
ハッシュ値はメッセージ末尾に記載します。
Your ExampleApp code is: 123ABC78
FA+9qCX9VSu
フロントしか触れない人は、SMS送信を担当するサーバー側の担当者に依頼しましょう。
自動入力が機能しない場合
紹介したハッシュ値作成手順を正し区行っていれば、少なくともハッシュ値は正しいはずです。
自動入力が機能しない場合は、アプリ設定や実装側を確認してください。
参考記事