【ReacNative Expo】"Facebook Policy Warning" : invalid key hashを解決した
経緯
Facebookから AnrdoidでFacebookログインするとクラッシュするから直してね。直さなかったらFacebookログイン機能停止するからね
って言う旨のメールがきた。
実際のメール:
確かに、いつからかAndroidでのFacebookログインが失敗するようになっていたようだ。
試してみると、invalid key hash does not match any stored key hashes
とエラーが出る。(本番環境で)😭
これはマズいので即刻対応した。
原因
おそらくだが、AAB(Android App Bundle)に対応すると、Facebookで使うKeyHashが変わるみたいだった。
ドキュメント(https://docs.expo.io/versions/latest/sdk/facebook/)にある通り、rRW++LUjmZZ+58EbN5DVhGAnkX4=
とexpo fetch:android:hashes
の結果をFacebookのKeyHashに入れれば良いはずだが、AAB対応すると別の対応が必要になるっぽい。ドキュメントに明記されてるわけじゃないが、僕の場合それで直ったので書き残しておく。
解決方法
https://github.com/magus/react-native-facebook-login/issues/297#issuecomment-433816732のソリューションが適用できた。
流れを書くと、
1. GooglePlayConsoleの「リリース管理」 > アプリの署名に行く。
2. アプリへの署名証明書セクションのSHA-1 証明書のフィンガープリントをコピーする。
※CD:A1:EA:A3:5C:5C:68:FB:FA:0A:6B:E5:5A:72:64:DD:26:8D:44:84
のような形になる。SHA1:
の部分は必要ないので除く。
3. http://tomeko.net/online_tools/hex_to_base64.phpを開き、Hex String
の欄にコピーした文字列をペーストする
4. Convertし、結果(base64)をコピーしてFacebookのKeyHashに入れる。