Facebook SDK для Android – приложение примера не будет работать

Okey, я сделал все дела, выполнил все шаги, но все равно не могу заставить его работать. Простое приложение примера, которое поставляется с SDK для Facebook, работает над эмулятором и устройствами с Android 2.5. Так что моя догадка – единственная вещь для входа.

Если я прав, тогда я должен создать хэш ключа, и мне сказали, что правильное хранилище отладки находится под

C: \ Users \ xxx.android \ debug.keystore

Поэтому я последовал за учебником.

Скачанный OpenSSL из google.code и в терминале пишу что-то вроде:

«C: \ Program Files \ Java \ jdk1.6.0_22 \ bin \ keytool.exe" -exportcert -alias androiddebugkey -keystore "C: \ Users \ JoeZ.android \ debug.keystore" | "C: \ Users \ xxx \ Загрузка \ openssl-0.9.8k_X64 \ bin \ openssl.exe "sha1 -binary |" C: \ Users \ xxx \ Downloads \ openssl-0.9.8k_X64 \ bin \ openssl.exe "base64

И я получаю хороший ключ, который я вставлял в ящик Android Key Hash в facebook, я пробовал оба с или без знака = после выхода, но ничего не работает.

Я просто получаю invalid_key, когда пытаюсь войти в приложение Example. Я даже попробовал подписанное приложение, но оно не сработало. И если я не ошибаюсь, единственное, что нужно написать в приложении Example, это мой APP_ID, верно?

У меня такая же проблема с моим собственным приложением, которое я разрабатываю. Так, пожалуйста, кто-нибудь может мне помочь?

Solutions Collecting From Web of "Facebook SDK для Android – приложение примера не будет работать"

Если команда keytool не работает для вас, я нашел способ обойти этот материал: вы можете просто перепрограммировать ключ, который будет помещен как «Хэш Хэша» в раздел «Разработчик Facebook». В рамках своей деятельности просто распечатайте «Ключевой хэш», выполнив:

try { PackageInfo info = getPackageManager().getPackageInfo("[your package name, eg com.yourcompany.yourapp]", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); Log.d("Hash Key:", Base64.encode(md.digest())); } } catch (NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } 

Это сработало для меня. Класс MessageDigest включен в JDK. Класс Base64 не. Вы можете использовать это, например.

У меня была аналогичная проблема. Для меня это было решено, когда я удалил последнее обновление приложения Facebook и теперь имею только собственное приложение Facebook v1.2. (Значит, когда я выхожу на рынок и искал Facebook, «Facebook для Android» будет отображаться как «не установлен» на моем устройстве).

На моем Nexus One (Android 2.2.1), когда у меня было установлено последнее приложение для Facebook, не было приложения «uninstall app», а только «Удалить последние обновления», что я и сделал. На самом деле, я даже не могу удалить приложение Facebook (теперь v1.2) по любой причине, кнопка удаления отключена / выделена серым цветом. Но в этом состоянии образцы, похоже, работают.

По крайней мере, я мог бы заставить простое и потоковое приложение работать таким образом.

Изменить / Решение:

Хорошо, теперь я работал. Я обнаружил, что копирую / вставляю неправильный хэш ключей из-за какого-то странного поведения keytool под окнами и неправильного синтаксиса команды в файле ReadMe в SDK для Facebook.

Параметр, который следует использовать, должен быть « keytool -export ... », а не « keytool -exportcert ... »; Если вы используете второй / неправильный параметр, keytool все равно будет распечатывать хеш-ключ (хотя он спрашивает пароль любого пароля), но хэш ошибочен.

Теперь я получил SSO.

Это мой призыв к окнам:

 keytool -export -alias androiddebugkey -keystore "C:\Documents and Settings\myuser\.android\debug.keystore" | openssl sha1 -binary | openssl enc -a -e 

Я пробовал окна в соответствии с вашим решением, используя как экспорт, так и exportcert, но он генерирует один и тот же Hash. Приложение теперь работает как раньше, а не использует новый способ SSO.

Я отлаживал android FB SDK, я нашел причину, но не стал точным решением. Не знаю, почему facebook ребята реализовали SSO таким образом.

  1. SSO не работает, если у вас нет нового обновления FB, установленного на вашем телефоне Android.

  2. В этом случае он направляет обычный диалог с именем пользователя и паролем.

3. Подробно, FB Android SDK для обработки SSO, вызывает намерение com.facebook.katana.ProxyAuth, он возвращает true, если обновление доступно.

  1. Если пользователь имеет новое обновление и уже зарегистрировался, он проверяет пользователя.

Надеюсь, это поможет.