2015-03-19 36 views
1

要生成我釋放鍵哈希我做Facebook的釋放鍵散列爲Android不工作

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

凡當然,我用我的實際釋放鑰匙別名和實際排放的關鍵路徑。然後,我去了Facebook並在設置中將其添加到Key Hashes下。但是我的發佈版本並不適合它。我的調試版本使用調試密鑰正常工作。任何想法有什麼不對?

在什麼情況下,我的應用程序能夠在調試模式下發布照片到Facebook,但不是在發佈模式下?我正在使用簡單的電話

Request request = Request.newUploadPhotoRequest(Session.getActiveSession(), photo, new Request.Callback() { 
    @Override 
    public void onCompleted(Response response) { 
    Log.i(TAG, response.toString()); 
    } 
}); 

同樣,當我使用調試密鑰和構建,它工作正常。這個問題可能是Proguard嗎?我現在用的是以下行

-keep class com.facebook.** { *; } 
-keepattributes Signature 
+0

你在你的清單文件添加您的釋放鍵? – 2015-03-19 04:35:37

+0

當你運行這個命令是問你的密碼? – 2015-03-19 04:47:06

+0

是命令要求輸入密碼,然後輸入與用於從eclipse導出發行版apk的密碼相同的密碼 – 2015-03-19 06:14:27

回答

2

爲了確保您keyhash是正確的,你可以驗證使用下面的代碼

// Add code to print out the key hash 
    try { 
     PackageInfo info = getPackageManager().getPackageInfo(
       "yourpackagename", 
       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) { 

    } 

進口

import java.security.MessageDigest; 
import java.security.NoSuchAlgorithmException; 
import android.content.pm.PackageInfo; 
import android.content.pm.PackageManager; 
import android.content.pm.PackageManager.NameNotFoundException; 
import android.content.pm.Signature; 
+0

我的網絡出現故障,現在正在恢復。感謝您的迴應,但PackageInfo似乎不存在,並簽署。你的進口是什麼?謝謝。 – 2015-03-19 06:13:46

+0

@KatedralPillon新增進口。 – 2015-03-19 06:31:51

+0

謝謝。打印的密鑰哈希看起來既不像我的調試密鑰,也不像我的釋放密鑰。那麼它將是哪個關鍵?我在調試模式下進行測試(相對於發佈的apk) – 2015-03-19 06:42:02