2014-02-26 52 views
0

我用這個代碼來生成我的應用程序keyhash:的Facebook SDK - Keyhashs不匹配

public static String getKeyHash(Context context) { 
    String returner = ""; 
    try { 
     PackageInfo info = context.getPackageManager().getPackageInfo(
       "com.abc.mypackage", PackageManager.GET_SIGNATURES); 
     for (Signature signature : info.signatures) { 
      MessageDigest md = MessageDigest.getInstance("SHA"); 
      md.update(signature.toByteArray()); 
      returner = Base64.encodeToString(md.digest(), Base64.DEFAULT); 
      Log.e(TAG, Base64.encodeToString(md.digest(), Base64.DEFAULT)); 
     } 
    } catch (PackageManager.NameNotFoundException e) { 
     e.printStackTrace(); 
     Log.e(TAG, e.toString()); 
    } catch (NoSuchAlgorithmException e) { 
     e.printStackTrace(); 
     Log.e(TAG, e.toString()); 

    } 
    return returner; 
} 

的功能從主活動onCreate函數調用。而產生的散列是

ki4PhEa/cy/qsP/omrTEPkYFCDE=

由於這種Android app Key Hash doesn't match any stored key hashes,我全部換成了/_,最後我得到這個

ki4PhEa_cy_qsP_omrTEPkYFCDE=

我把keyhash到Facebook開發人員網站,保存

enter image description here

當我登錄到Facebook上,我的應用程序,讓這個異常(真棒!!!!)

02-26 23:05:49.008 4966-4966/? E/MyClassListViewAdapter﹕ Bad thing happened com.facebook.FacebookAuthorizationException: UnknownError: ApiException:Key hash ki4PhEa_cy_qsP_omrTEPkYFCDE does not match any stored key hashes. 

我該如何解決這個問題的荒謬?

更新此問題只發生在我的真實設備(Htc One X)上。在仿真器上運行時不會發生

回答

0

您需要使用keytool從簽名應用程序時使用的證書中生成密鑰哈希。

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

您可以爲調試和發佈密鑰庫執行此操作。

+0

我用'keytool'在第一時間,並得到了這個例外,所以我轉而使用哈希計算函數。順便說一句,我只是再次運行keytool,它給出結果'bLxqLn/RXHcNbPbGMPFfbQPDlY8 ='。我再次將'/'替換爲'_'並放到facebook開發者網站上。再次,仍然不能在我的真實設備上工作。請看看我更新的問題 –

0

我嚴重不知道,但它開始後,我添加鍵值與/(而不是去掉)工作

ki4PhEa/cy/qsP/omrTEPkYFCDE=

enter image description here