【问题标题】:Facebook Key hash is not generatingFacebook 密钥哈希未生成
【发布时间】:2015-06-28 11:52:11
【问题描述】:

我必须在我的 android 应用程序中使用登录和 Facebook 功能。为此,我需要生成密钥哈希。我正在使用以下代码生成 facebook 密钥哈希。

public class GenerateFacebookSignature extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        printHashKey();
    }

    public void printHashKey() {
        try {
            PackageInfo packageInfo = getPackageManager().getPackageInfo("com.example.facebooklogin", PackageManager.GET_SIGNATURES);
            for (Signature signature : packageInfo.signatures) {
                MessageDigest messageDigest = MessageDigest.getInstance("SHA");
                messageDigest.update(signature.toByteArray());

                Log.d("FaceBookKeyHash:", Base64.encodeToString(messageDigest.digest(), Base64.DEFAULT));
            }
        }
        catch (PackageManager.NameNotFoundException e) {
        }
        catch (NoSuchAlgorithmException e) {
        }
    }
} 

这个类位于另一个名为 com.example.facebooklogin.application 的包中,而我的其他应用程序类位于包 com.example.facebooklogin 中。

我已将它包含在我的 manifest.xml 文件中,但它没有在 logcat 中显示任何哈希键。

<application
        android:name=".application.GenerateFacebookSignature">
</application>

谁能指出我做错了什么?

【问题讨论】:

标签: android facebook-login facebook-android-sdk


【解决方案1】:

它引发了一个异常,因为它找不到"com.example.facebooklogin"

将其更改为您的包名称,它应该可以工作。你可以像这样使用Context#getPackageName()

PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);

【讨论】:

  • 但它没有显示任何异常意味着应用程序运行良好。
  • 您正在通过不在 logcat 中打印任何内容来吞下异常。在catch 子句中使用e.printStackTrace()
  • 我有 e.printStackTrace() 但它运行良好直到。
  • 我也使用了 getPackageName() 但不会生成密钥哈希。
  • @AshishKumarGupta,好吧,在你的每段代码中添加一个不同的Log.d() 消息:onCreateprintHashKeytryfor 循环,两者都是catch。通过这种方式,您可以查看执行的内容和未执行的内容并进行报告。你也可以用调试器做同样的事情。