Facebook登录将无法解析toByteArray()

时间:2014-09-24 05:00:58

标签: java android facebook facebook-android-sdk

我正在构建一个需要Facebook登录和身份验证的应用程序。

我正在关注

https://developers.facebook.com/docs/android/getting-started#create-app

我收到了这个错误:当我点击facebook登录按钮时:

enter image description here

多个帖子说这段代码应该解决错误

Key hash doesn't match while facebook login in android

  try {
            PackageInfo info = getPackageManager().getPackageInfo(
                    "com.hitup.hitup",
                    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)
        {

        }

然而无法解析toByteArray()方法!

enter image description here

如何解决此错误并为我的应用程序实现简单的Facebook登录?

2 个答案:

答案 0 :(得分:43)

答案 1 :(得分:6)

from Logcat you can get hash key of facebook please do copy from logcat which having Logcat tag "KeyHash" and put it in your project on developer.facebook site 

enter image description here

import android.content.pm.Signature;

      try {
        PackageInfo info = getPackageManager().getPackageInfo(
                **"do not forgot to your package name"**, 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) {

    }



OR 

1. for Android default keystore  : add this to in your terminal 
 
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

2. for signed keystore 

keytool -exportcert -alias aliasname -keystore keystorename | openssl sha1 -binary | openssl base64