0

私は FacebookSDK を使用しており、すべての手順に従って新しいキーハッシュを生成しています。デバッグ キーストアを使用して生成されたキーハッシュは魅力的に機能しますが、独自のキーストアを使用して生成されたキーハッシュは機能しません。トラブルシューティングで指定された機能を試しましたが、まだ機能していません. onCreate で次のコードを使用してみました

// Add code to print out the key hash
        try {
            System.out.println("Inside try for keyhash");
            PackageInfo info = getPackageManager().getPackageInfo(
                    "com.myapp.facebookint", 
                    PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
                System.out.println("KeyHash:"+Base64.encodeToString(md.digest(), Base64.DEFAULT));
                }
        } catch (NameNotFoundException e) {
            System.out.println("keyhash name not found");
        } catch (NoSuchAlgorithmException e) {
            System.out.println("keyhash algo not found");
        }

Facebookアプリの設定に挿入したキーハッシュが得られましたが、解決策はありません! 今、キーハッシュを使用するという概念について疑問に思っています.Facebookはそれをどのように識別しますか? デバッグ キーハッシュを使用してアプリをアップロードするとどうなりますか?

私の印象では、facebook はキーハッシュをアプリ自体の署名と照合し、両方が同じキーストアで署名されている場合、アプリの認証を許可しますが、そうではないようです。リリースの準備をするようにアプリをエクスポートし、ファイル エクスプローラーを使用して APK を電話にダウンロードし、そこからインストールして実行しようとしたところ、デバッグ モードで行う場合と同じでした。

誰でもこれに光を当ててください。

4

1 に答える 1

0

はい、その通りです。Facebook はアプリの署名を認識し、それを検証して、認証しようとしているアプリが正しいものかどうかを判断します。System.out.println の何かが間違っていたと思います。https://stackoverflow.com/a/9600642/243354の次のコードを使用しました。

このコードを挿入し、apk をエクスポートしてリリース用に署名し、その apk をエミュレーターにロードして、logcat でハッシュ キー タグを確認し、見つけたら Facebook の設定に更新します。

于 2013-07-31T13:31:26.417 に答える