3

Facebookのネイティブログインを使用していますが、 CLOSED_LOGIN_FAILED を取得しています。

以下は、DDMS で取得した LogCat です。

    02-22 15:16:22.939: E/exception(4583):  is null
    02-22 15:16:22.939: E/session(4583):  is {Session state:OPENING, token:{AccessToken token:ACCESS_TOKEN_REMOVED permissions:[]}, appId:420081348034777}
    02-22 15:16:22.939: E/state(4583):  is OPENING
    02-22 15:16:51.749: E/exception(4583):  is com.facebook.FacebookOperationCanceledException: remote_app_id does not match stored id 
    02-22 15:16:51.749: E/session(4583):  is {Session state:CLOSED_LOGIN_FAILED, token:{AccessToken token:ACCESS_TOKEN_REMOVED permissions:[]}, appId:420081348034777}
    02-22 15:16:51.749: E/state(4583):  is CLOSED_LOGIN_FAILED
    02-22 15:16:51.749: E/if logged in is(4583):  true : false
    02-22 15:16:51.749: E/if logged in is(4583):  exception : com.facebook.FacebookOperationCanceledException: remote_app_id does not match stored id 
    02-22 15:16:51.749: E/if logged in(4583):  premissions : []

を使用してキーハッシュを取得します

C:\Program Files\Java\jre6\bin>keytool -exportcert -alias androiddebugkey -keystore "c:\documents and settings\Droid 4\.android\debug.keystore" | C:\openssl-0.9.8g_win32\bin\openssl sha1 -binary | C:\openssl-0.9.8g_win32\bin\openssl base64

"c:\documents and settings\Droid 4\.android\debug.keystore"私のキーストアパスはどこC:\openssl-0.9.8g_win32\bin\opensslですか、私のopensslパスはどこですか

これは、Eclipseを介してそれを使用するためのキーと、作成したキーストアのキーを取得する方法です。

C:\Program Files\Java\jre6\bin>keytool -exportcert -alias mykeystorename -keystore "D:\Apps\mykeystorepath" | C:\openssl-0.9.8g_win32\bin\openssl sha1 -binary | C:\openssl-0.9.8g_win32\bin\openssl base64

これは、公開用に作成した kaystore で署名し、キーハッシュを取得するために使用するコマンドです。

どこが間違っているのかわかりません。関連するすべてのスレッドを試しましたが、成功しませんでした。

前もって感謝します 。

4

3 に答える 3

17

信頼性が高いため、このコードを使用してください。多くのバージョンのopensslを試しましたが、成功しませんでした。

  try {
        PackageInfo info = getPackageManager().getPackageInfo("your.package",
                PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.d("YOURHASH KEY:",
                    Base64.encodeToString(md.digest(), Base64.DEFAULT));
        }
    } catch (NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

    }

onCreateに貼り付けます

于 2013-03-19T11:32:17.863 に答える
6

私も同じ問題で立ち往生し、最終的に回避策を見つけました。間違ったハッシュキーの背後にある主な理由はopensslでした。ここからopensslをダウンロードしてください。facebookはopensslへのダウンロードリンクをサイトに提供する必要があると思います。人々はこのような問題に行き詰まることはありません

于 2013-04-25T10:57:16.880 に答える
0

上記の(正しい)回答に加えて、「デバッグ」ビルドではなく「リリース」ビルド(EXPORT)を実行すると(たとえば、ビルドしてEclipseで実行するだけ)、ビルドプロセスで別のキーが使用されることに気付きましたお店。つまり、ハッシュ コードが異なります。上記のコードを実行してハッシュキーを取得しました。接続して投稿できましたが、ユーザーはいませんでした (RELEASE キーストアを使用して構築された STORE からインストールしたためです!)

それで。幸いなことに、Facebook では複数のハッシュが許可されています。お好みの方法 (上記のコードまたは SSL コマンド ラインのいずれか) を選択し、両方のキーをアプリの Facebook 管理画面に入力します。

チェックポイント - 「安全」であることを確認するために、1 つだけでなく、少なくとも 2 つの鍵があることを確認してください。持っている場合は、「デバッグ」ビルドが接続に失敗するか、「リリース」ビルドが接続に失敗することを意味します。

于 2013-06-20T09:03:42.937 に答える