web-dev-qa-db-ja.com

私のAndroidアプリでのFacebookログインはリリースapkで正常に動作していますが、Playストアで同じapkを公開した後は正しく動作しません

私のAndroidアプリケーションでは、Facebookログインを使用しました。これは初めて使用しました。

ログイン機能はリリースapkファイルで正常に動作しています。また、keytool、opensslを使用してキーハッシュを生成しました:-

keytool -exportcert -alias "MyAppAlias" -keystore "Path to keystore" | 
openssl sha1 -binary | openssl base64

生成されたキーハッシュをFacebook開発者アカウントのアプリ設定に追加しました。署名付きapkを生成しているとき、Facebookログインは正常に機能していますが、Playストアで同じapkを公開した後、Facebookログインは機能せず、クラッシュすることなく、呼び出された場所からのアクティビティ(マイアプリのログインアクティビティ)にリダイレクトされます。メッセージに応答していません。

ありがとう。

8
vChamps

最後に、私は問題を解決しました。

この問題の背後にある理由アプリをPlayストアに公開しているときに、GooglePlayからAPPSIGNINGを実行したため、そこで新しいSHA-1キーが作成されました。

このキーを表示するには、Google Playコンソールに移動し、アプリを選択してからリリース管理->アプリ署名

このページの「アプリ署名証明書」セクションで新しいSHA-1キーを取得しました

enter image description here

つまり、ポイントは、上の画像に示すように、GooglePlay署名が新しい証明書を作成することです。

Facebook開発者アカウントで、キーストアによって生成されたキーハッシュを追加する必要があります。ただし、この場合、このAPPSIGNING証明書に対応するキーハッシュも追加する必要があります。ここで問題となるのは、この証明書/ SHA-1フィンガープリントのキーハッシュを取得する方法です。

Google Play APP SIGNINGのSHA-1キーからキーハッシュを作成するにはどうすればよいですか?

SHA-1キーからキーハッシュを生成するには、小さなJavaプログラム、

// GOOGLE PLAY APP SIGNING SHA-1 KEY:- 65:5D:66:A1:C9:31:85:AB:92:C6:A2:60:87:5B:1A:DA:45:6E:97:EA
            byte[] sha1 = {
                    0x65, 0x5D, 0x66, (byte)0xA1, (byte)0xC9, 0x31, 0x85, (byte)0xAB, (byte)0x92, (byte)0xC6, (byte)0xA2, 0x60, 0x87, 0x5B, 0x1A, (byte)0xDA, 0x45, 0x6E, (byte)0x97, (byte)0xEA
            };
            System.out.println("keyhashGooglePlaySignIn:"+ Base64.encodeToString(sha1, Base64.NO_WRAP));

出力:-

keyhashGooglePlaySignIn: ZV1dkSgxvc2p4aCtFx9tcaQr8N4=

このキーハッシュをコピーして、アプリのFacebookDeveloperアカウント設定に貼り付けます。これが私の問題が解決された方法です。

コメントをくれたすべての開発者に感謝します。 :)

36
vChamps

@vChampsの回答を少し改善しました。 SHA1文字列を以下の関数に渡すだけです

public void hashFromSHA1(String sha1) {
    String[] arr = sha1.split(":");
    byte[] byteArr = new  byte[arr.length];

    for (int i = 0; i< arr.length; i++) {
        byteArr[i] = Integer.decode("0x" + arr[i]).byteValue();
    }

    Log.e("hash : ", Base64.encodeToString(byteArr, Base64.NO_WRAP));
}
5
Farhan C K
echo SHA1_here | xxd -r -p | openssl base64

上記のコードと同じように機能します。

2
renish p.r

コピーここにSHA1キーを貼り付けて、すべての頭痛の種を減らします。 リンク 内部的に16進数をBase64に変換します。

0
vinay shetty

Kotlinコード:

        import Android.util.Base64
        import Android.util.Log

        fun hashFromSHA1(sha1: String) {
            val arr = sha1.split(":".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
            val byteArr = ByteArray(arr.size)

            for (i in arr.indices) {
                byteArr[i] = Integer.decode("0x" + arr[i])!!.toByte()
            }

            Log.e("hash : ", Base64.encodeToString(byteArr, Base64.NO_WRAP))
        }
0
Amit Prajapati