2016-08-01 3 views
1

Я использую интеграцию входа в Facebook для своего приложения. Я настроил хэш-ключ Facebook для подписанного APK и успешно выполнял. Но иногда, когда я выпускаю новый файл APK, хеш-ключ больше недействителен («недопустимый хэш-код хэша facebook android не соответствует какому-либо сохраненному»).Android-хэш-ключ Facebook для подписанного APK иногда меняет

Я прочитал эту ссылку, нашел, что «Кроме того, в зависимости от компьютера, иногда ключ может измениться, и если да, то хэш изменения и вы будете просто приспособить для этого» android hash key

Могли пожалуйста, позвольте мне объяснить более подробно об этом? Является ли хэш-ключ Facebook для подписанного APK иногда изменен? как насчет того, когда приложение загружается в магазин?

Большое спасибо.

+0

я столкнулся с аналогичной проблемой, после того, как я получил хэш-ключ во время отладки знак apk.that ключа работал для меня. – Vasant

+0

Вам нужно зарегистрировать свой хэш-ключ на консоли разработчика facebook, выпуская свой apk в режиме выпуска! – Piyush

+0

на странице настроек приложения facebook есть возможность добавить несколько значений хэша ... Если вы используете Android-студию, вы можете легко получить хеш-значение для подписанной сборки, выполнив задачу «Подписать отчет» непосредственно из списка задач градации в правом боковом окне. ..thanks –

ответ

0

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

+0

С вашим комментарием, это означает, что хэш-ключ никогда не изменяется, если мы используем только один файл release.keystore, не так ли? –

+0

Да .. Это не изменится в соответствии с документацией разработчика. – LvN

+0

Если он меняется, убедитесь, что вы используете тот же файл, и клавиатура, добавленная в консоль разработчика facebook, верна. Я предлагаю вам использовать keyhash с помощью logcat, не переходите к инструменту командной строки, так как это запутывает. Вы можете использовать ответ @ user3793589. Создайте подписанный apk и запустите его на своем устройстве, проверьте лог-код и получите ключ-ключ к выпуску. – LvN

0

Всякий раз, когда ваше приложение находится в стадии разработки, хеш-ключ отладки используется для интеграции в facebook. Хеш-ключ отладки зависит от машины (например, ПК, на котором вы работаете)

Принимая во внимание, что ключ хэша выпуска отличается от ключа отладки (он не изменится). Когда вы создаете подписанный apk для загрузки, ключ для хэша выпуска должен быть обновлен для Facebook Integration с вашим приложением.

Read this для лучшего понимания о том, как создать релиз хэш-ключ для Facebook

Можно проверить хэш-ключ, используя следующий код:

// Add code to print out the key hash 
    try { 
     String PACKAGE_NAME=getApplicationContext().getPackageName();; 
     PackageInfo info = getPackageManager().getPackageInfo(
       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) { 

    }  
+0

Спасибо за ваш ответ. Как я заметил, я успешно запускаю хэш-ключ для Facebook с подписанным APK, но когда-то, когда я создаю новый файл APK для тестирования, хеш-ключ уже недействителен. Для этого я использовал только один ПК. С вашим комментарием, это означает, что хэш-ключ может быть изменен, когда мы создаем новый файл APK, правильно? –

+0

@DinhThang Вы изменили название своего пакета? или название проекта? – Arshak

+0

@DinhThang Я добавил код, который покажет ваш keyhash в logcat во время запуска вашего приложения. Вы можете сравнить это с keyhash, хранящимся в консоли разработчика facebook, и добавить keyhash, если он отличается. – Arshak

0

Вы должны зарегистрироваться как в hashkey разработчиков (связанный с вашим компьютером) и hashkey производства (связанный с подписанной версией) на facebook. Чтобы убедиться, что вы имеете правильный ключ, запустите в своем коде и скопировать результат:

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()); 
      System.out.println(Base64.encodeToString(md.digest(), Base64.DEFAULT)); 
      } 
    } catch (NameNotFoundException e) { 

    } catch (NoSuchAlgorithmException e) { 

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