使用Facebook Android SDK无效密钥哈希

时间:2014-07-25 10:09:48

标签: android eclipse adt keytool

我正在尝试使用Facebook Android SDK通过Facebook登录按钮开发一个简单的应用程序。 但是我遇到了Key Hashes的问题。我创建了一个调试密钥和一个发布密钥:

调试密钥:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

发布密钥:

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

然后我在Facebook Developers页面中复制了这个键哈希。 当我导出apk并将其复制到设备中时它运行良好,但是当我尝试从Eclipse安装应用程序时(作为/应用程序运行/作为Android应用程序)它不起作用。似乎应用程序正在使用与使用keytool创建的密钥哈希不同的密钥哈希。 谁知道如何解决这个问题?

3 个答案:

答案 0 :(得分:23)

尝试从这里获取HashKey

public static void showHashKey(Context context) {
            try {
                PackageInfo info = context.getPackageManager().getPackageInfo(
                        "com.example.tryitonjewelry", PackageManager.GET_SIGNATURES); //Your            package name here
                for (Signature signature : info.signatures) {
                    MessageDigest md = MessageDigest.getInstance("SHA");
                    md.update(signature.toByteArray());
                    Log.i("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
                    }
            } catch (NameNotFoundException e) {
            } catch (NoSuchAlgorithmException e) {
            }
        }

答案 1 :(得分:2)

 try {
            PackageInfo info = getPackageManager().getPackageInfo("your pakage name here", PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                Log.e("KeyHash:", "key is: "+Base64.encodeToString(md.digest(), Base64.DEFAULT));

                }
        } catch (NameNotFoundException e) {

            Log.e("error","error name not found");
        } catch (NoSuchAlgorithmException e) {

            Log.e("error","error no algorithm");

        }**strong text**

通过使用这个,你可以得到你的密钥哈希,然后在Facebook开发者网站上使用这个。

答案 2 :(得分:0)

 try {
         PackageInfo info = getPackageManager().getPackageInfo("your package name", PackageManager.GET_SIGNATURES);
         for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.d("KeyHash:", "KeyHash:  " + Base64.encodeToString(md.digest(), Base64.DEFAULT));
         }
      }
      catch (PackageManager.NameNotFoundException e) {

      }
      catch (NoSuchAlgorithmException e) {

      }