2014-09-24 75 views
7

我正在构建一个应用程序,需要Facebook登录和身份验证。toByteArray()将无法解析的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登录?

+0

看我更新我的答案 – 2014-09-24 05:16:01

回答

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 
+0

这怎么可以实现? – 2014-09-24 05:06:34

+0

你已经实现它已经看到Log.d(“KeyHash:”,Base64.encodeToString(md.digest(),Base64.DEFAULT));所以,你可以看到你的logcat其中,具有标签“KeyHash”复制其价值 – 2014-09-24 05:07:57

+0

现在我想你有我的观点 – 2014-09-24 05:16:45