android facebook整合無效密鑰哈希



Answers

如果您遇到此問題,請將此密鑰放入您的developer.facebook.com

然後確保你的應用程序是活著

developer.facebook.com

這個綠色圓圈表示應用程序正在運行

如果不是,請按照以下兩個步驟使您的應用程序生效

步驟1轉到您的應用程序 - > 設置 =>並添加聯繫人電子郵件並應用保存更改

Setp 2然後轉到應用程序審查選項,並確保此切換是是的我添加了一個屏幕截圖

注意:如果您想複製hashkey,請在Logcat中檢查BlueServiceQueue。

Question

你好所有在我的應用程序我需要得到fb的數據...我正在做的..

我已經創建了成功登錄的應用程序ID ,但註銷後我登錄,然後它給了我

我在做什麼錯? 請建議我使用Facebook的SDK ...我已經在我的手機中安裝了Facebook ...這在運行良好的模擬器,沒有內置的Facebook應用程序安裝

這是我的代碼

 if (FB_APP_ID == null) {
            Builder alertBuilder = new Builder(this);
            alertBuilder.setTitle("Warning");
            alertBuilder.setMessage("A Facebook Applicaton ID must be " +
                    "specified before running this example: see App.java");
            alertBuilder.create().show();
        }

        // Initialize the dispatcher
        Dispatcher dispatcher = new Dispatcher(this);
        dispatcher.addHandler("login", LoginHandler.class);
        dispatcher.addHandler("stream", StreamHandler.class);
        dispatcher.addHandler("logout", LogoutHandler.class);

        // If a session already exists, render the stream page
        // immediately. Otherwise, render the login page.
        Session session = Session.restore(this);
        if (session != null) {
            dispatcher.runHandler("stream");
        } else {
            dispatcher.runHandler("login");
        }



將以下代碼粘貼到您的OnCreate方法中

try {
    PackageInfo info = getPackageManager().getPackageInfo(
            "com.example.packagename", 
            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));
        }
} catch (NameNotFoundException e) {
  e.printStackTrace();

} catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
}

只需修改程序包名稱即可。然後轉至Log cat並選擇Debug search here,然後您將找到散列鍵。 現在復制這個哈希鍵,然後去developer.facebook.app_id網站,然後編輯你的哈希鍵,然後按保存。 現在再次運行你的android項目,我認為問題將得到解決。




這段代碼會給你你的Facebook的散列,但你必須按照這些步驟才能得到釋放condidate散列。 1.將此代碼複製並粘貼到主要活動中

try {
    PackageInfo info = getPackageManager().getPackageInfo(
                "com.example.packagename", 
                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));
    }
} catch (NameNotFoundException e) {

} catch (NoSuchAlgorithmException e) {

}
  1. 生成簽名的apk。
  2. 將手機連接到筆記本電腦,並確保它保持連接狀態。
  3. 通過手動將釋放apk移動到您的手機,在您的手機中安裝並運行apk。

  4. 現在看看android logcat(使用過濾器KeyHash:)你應該會看到你的Facebook發布哈希鍵。 只需將其複制並粘貼到您的https://developers.facebook.com/apps中即可。

  5. 現在你可以測試應用程序,它應該工作得很好。

    祝你好運。




經過這麼多的試驗後,我偶然發現了一個解決方案。 我生成並添加了調試和釋放鍵到Facebook開發者控制台,仍然得到錯誤。

對我而言唯一的解決方案是從谷歌卸載OpenSSL程序並從http://slproweb.com/products/Win32OpenSSL.html下載。

它真的很神奇




您必須為調試創建兩個密鑰哈希,並為發布創建一個哈希。

對於調試密鑰哈希:

在OS X上,運行:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

在Windows上,運行:

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl
base64

調試密鑰哈希源

對於發布密鑰哈希:

在OS X上,運行:( 將<>替換為您的值之間的內容)

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

在Windows上,使用:( 使用您的值替換<>之間的內容)

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

釋放鍵哈希源







根據面向Android的Facebook登錄 ,您必須提供密鑰哈希值。 為了獲得它,您將需要用於簽署您的應用程序的密鑰

keytool \
    -exportcert \
    -alias YourKeyAlias \
    -storepass YourStoreKeyPassword \
    -keystore PathToYourKeyStoreFile | openssl sha1 -binary | openssl base64



經過長時間的研究,我們找到了解決方案。

我們將權限設置為:

loginButton.setReadPermissions(public_profile email);

這是第一次工作,但是當我們重新登錄到FB時,它給出了無效哈希錯誤。

簡單的解決方案是將上面的行更改為:

    loginButton.setReadPermissions(Arrays.asList(
            "public_profile", "email"));

它的工作就像一個幸福!

希望這有助於某人。

Facebook應該返回正確的異常,而不是誤導性的無效哈希鍵錯誤。




這裡的人是很多正確的答案。 就一件事。 將接收到的哈希粘貼到應用程序 - >設置 - >主要不通過快速入門教程。




Links