【问题标题】:Facebook release key hash for android not workingFacebook 为 android 发布密钥哈希不起作用
【发布时间】:2015-03-20 00:58:57
【问题描述】:

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

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

【问题讨论】:

  • 您是否在清单文件中添加了发布密钥?
  • 当你运行这个命令时询问你的密码?
  • 是的,该命令要求输入密码,我输入了用于从 eclipse 导出发布 apk 的相同密码
  • 不,我没有在清单中添加发布密钥。我不知道我应该这样做。我该怎么做?
  • 我的网络中断了一段时间。康卡斯特似乎通过降低我的整体服务质量来挑战网络中立性。所以花了大约一个小时才回来。

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


【解决方案1】:

要确保您的密钥哈希正确,您可以使用以下代码进行验证

 // 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;

【讨论】:

  • 我的网络中断了,现在正在恢复。感谢您的回复,但 PackageInfo 似乎不存在并且签名。你的进口是什么?谢谢。
  • @KatedralPillon 添加了导入。
  • 谢谢。打印的密钥哈希看起来既不像我的调试密钥,也不像我的发布密钥。那么它会是哪把钥匙呢?当然,我在调试模式下进行测试(而不是发布的 apk)
  • @KatedralPillon 您需要先签署您的 apk,然后通过 USB 数据线连接您的手机并在手机上运行已签署的 apk。检查你的 logcat 的 keyhash。您的 keyhash 将以“=”结尾。
  • 谢谢。 +1。您的方法完成与keytool -exportcert -alias &lt;RELEASE_KEY_ALIAS&gt; -keystore &lt;RELEASE_KEY_PATH&gt; | openssl sha1 -binary | openssl base64 相同的事情。但我仍然留在我开始的地方:)。为什么我的发布版本没有发布?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多