2014-10-08 2 views
0

У меня есть эта проблема, я создаю логин FB с помощью FB SDK Android с java в Eclipse. Когда я отлаживаю и запускаю это приложение в Android Emulator, все правильно, я могу войти в систему, я могу выйти из системы. Но когда я экспортировать приложение для разработки версии (.apk), и установить его на свой телефон или на genymotion эмуляторе я адресности это ошибки:Приложение для входа в Android FB - недействительный хэш ключа

"Invlaid key hash. The key hash xxxxxxxxxxxxxxxxxxx does not match any stored key hashes. Configure your app key hashes at http://developers.facebook.com/apps/72012084472886" 

Хэш ключа является создание correoct я использую это:

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

} 

У вас есть идея, что не так?

спасибо.

+0

https://developers.facebook.com/docs/android/getting-started/ –

+0

Спасибо, но я следую этой инструкции, когда я создаю свое приложение ... –

+0

Релиз Apk использует другой ключ для подписания. . – Selvin

ответ

1

При запуске приложения через ADB Eclipse обычно использует хранилище ключей с именем debug.keystore, это хранилище ключей обычно не используется в производственных приложениях. Когда вы экспортируете приложение и создаете хранилище ключей, keyhash изменяет значение, потому что вы меняете хранилище ключей.

Вы можете реализовать этот код в приложение, так что вы можете повторить keyhash вам stackrace:

public static void printHashKey(Context pContext) { 
     try { 
      PackageInfo info = getPackageInfo(pContext, PackageManager.GET_SIGNATURES); 
      for (Signature signature : info.signatures) { 
       MessageDigest md = MessageDigest.getInstance("SHA"); 
       md.update(signature.toByteArray()); 
       String hashKey = new String(Base64.encode(md.digest(), 0)); 
       Log.i(TAG, "printHashKey() Hash Key: " + hashKey); 
      } 
     } catch (NoSuchAlgorithmException e) { 
      Log.e(TAG, "printHashKey()", e); 
     } catch (Exception e) { 
      Log.e(TAG, "printHashKey()", e); 
     } 
    } 

Сниппет подходит только для развития, а не для производства!

+0

спасибо, этот работа. –

Смежные вопросы