【发布时间】:2017-09-07 12:23:00
【问题描述】:
我的 Android 上出现“无效的密钥哈希”错误,即使我的应用正在生产中并且 facebook 应用设置为公开。如果我将密钥哈希放入 facebook 设置中,它可以正常工作,但我想这只能在我自己的设备上工作。我在这里做错了什么?
【问题讨论】:
我的 Android 上出现“无效的密钥哈希”错误,即使我的应用正在生产中并且 facebook 应用设置为公开。如果我将密钥哈希放入 facebook 设置中,它可以正常工作,但我想这只能在我自己的设备上工作。我在这里做错了什么?
【问题讨论】:
您必须使用此方法创建一个发布 apk 并打印 keyhash。并在 fb consol 中设置该 keyHash。
public static void printHashKey(Context context)
{
// Add code to print out the key hash
try {
PackageInfo info = context.getPackageManager().getPackageInfo(
com.example.app.BuildConfig.APPLICATION_ID,
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 (PackageManager.NameNotFoundException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
【讨论】:
按照此步骤进行解决。
将此代码粘贴到您的活动中。
public static void printHashKey(Context context)
{
// Add code to print out the key hash
try
{
PackageInfo info = context.getPackageManager().getPackageInfo( com.example.app.BuildConfig.APPLICATION_ID, 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 (PackageManager.NameNotFoundException e)
{
e.printStackTrace();
}
catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
}
}
签署您的 APK。(发布 APK)
logcat 中看到新的HashKey HashKey 粘贴到您创建应用的 Facebook 开发者网站中。【讨论】: