2013年7月26日 星期五

[Android][軟體開發] 如何產生Key Hashes?

在上一篇中,我們介紹了如何申請Facebook App,在這篇中,則會接續著介紹,要如何產生過程當中所需要的Key Hashes。

首先,我們得先確定必要的資源都有了
1. 先下載OpenSSL (下載頁面),並安裝好。以Windows XP 32bits為例,需要下載並安裝下列兩個檔案
2. 找到下列三個檔案所在的路徑:
  • keytool.exe:通常是放在JDK安裝目錄下 (例如:C:\Program Files\Java\jdk1.7.0\bin)
  • debug.keystore:通常放在User目錄下 (例如:C:\Documents and Settings\User\.android)
  • openssl.exe:這就放在剛才安裝的目錄下 (例如:C:\OpenSSL\bin)
3. 點選「開始」> 「執行...」,輸入“cmd”
4. 在彈出command line視窗中輸入
"C:\Program Files\Java\jdk1.7.0\bin\keytool" -exportcert -alias androiddebugkey 
-keystore "C:\Documents and Settings\User\.android\debug.keystore" | 
"C:\OpenSSL\bin\openssl" sha1 -binary |
"C:\OpenSSL\bin\openssl" base64 


=============2013/8/2 更新================
經過實際上開發後發現,debug的時候真正Package使用的hash key卻跟上面的作法不同,挺奇怪的... 如何抓到package真正的hash key呢? 只需要將以下的代碼加到Activity的onCreate(),就會在Logcat印出package所使用的Hash key。
public void printHashKey() {

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

        } catch (NoSuchAlgorithmException e) {

        }

    }
最後,記得要再去Facebook App修改喔。

張貼留言