Facebook发布密钥哈希为Android无法正常工作

时间:2015-03-19 04:30:58

标签: android facebook hash apk facebook-android-sdk

要生成我的发布密钥哈希,我做

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

1 个答案:

答案 0 :(得分: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;