Пример единого входа в Facebook не работает - «Произошла ошибка. Повторите попытку позже» - PullRequest
6 голосов
/ 06 марта 2011

Я пытаюсь интегрировать Facebook в свое приложение и поэтому следовал учебному руководству по адресу: Facebook Android , но я не могу заставить работать первый пример (единый вход). Когда мое приложение загружается, я получаю диалоговое окно facebook, но оно просто говорит: «Произошла ошибка. Пожалуйста, попробуйте позже». с кнопкой «ОК» в стиле Facebook внизу и в logcat ничего нет: App showing Facebook error

Я выполнил шаги, описанные в руководстве, но думаю, что-то не так с ID приложения или хеш-ключом, сгенерированным keytool. Вот шаги, которые я выполнил:

  1. клон fb git.
  2. создать проект fbSDK.
  3. создать собственный проект fb и связать fbSDK как библиотеку.
  4. Затем я выполнил команду keytool cmd с openssl и ввел пароль «android», как это было предложено другими в stackoverflow.
  5. Я пошел на developers.facebook.com и создал новое приложение.
  6. В «Редактировать настройки-> Мобильные телефоны и устройства» я поместил свой хеш в предоставленное поле.
  7. В «Редактировать настройки-> Мобильные телефоны и устройства» я выбрал «Родное приложение» в качестве «Тип приложения»
  8. Вернувшись в приложение, я скопировал и вставил пример кода SSO.
  9. Я изменил «YOUR_APP_ID» в конструкторе Facebook () на идентификатор приложения, показанный на странице developers.facebokk.com для моего нового приложения.
  10. Я запустил приложение на своем телефоне.

Не знаю, почему в logcat ничего нет, но когда я его устанавливаю, Консоль всегда, в обязательном порядке, говорит: ActivityManager: Warning: Activity not started, its current task has been brought to the front

И я не могу найти ссылку logcat на мое приложение или ошибку, которую я получал от sdk facebook, которая была: Facebook-ProxyAuth(4828): Failed to read calling package's signature.

Я занимаюсь этим уже несколько часов, и любая помощь будет принята с благодарностью. Я не могу поверить, что Facebook SDK и справка для Android настолько отрывочны, что Facebook должно быть стыдно за себя.

Спасибо

InfinitiFizz

Ответы [ 5 ]

2 голосов
/ 09 апреля 2011

Вы должны вызывать .request () из отдельного потока.Если вы сделаете это в потоке пользовательского интерфейса, авторизация на Facebook не будет завершена до выполнения вашего кода.Так что называйте новую ветку в "onComplete" авторизации на фейсбуке.На этом этапе у вас будет действительный токен доступа.Удачи!

(вот почему API говорит «не вызывайте это из потока пользовательского интерфейса!».)

2 голосов
/ 21 ноября 2011

На самом деле я столкнулся с той же проблемой точно, и она решена. Итак, при генерации хеш-ключа используйте следующие шаги:

  1. Откройте cmd и перейдите на путь Android SDK.
  2. введите эту команду: keytool -exportcert -alias androiddebugkey -keystore [ваш путь к SDK | например, c: \ users \ user] .android \ debug.keystore | openssl sha1 -binary | openssl base64
  3. после этого промет для пароля введите "android"
  4. Скопируйте результат в настройки приложения Facebook и сохраните настройки.
  5. в вашем приложении для Android используйте идентификатор приложения Facebook (не хэш-ключ Android).
1 голос
/ 01 сентября 2012

У меня была эта проблема просто потому, что я звонил в API Facebook, прежде чем правильно инициализировал объект Facebook с правильным ключом. Просто убедитесь, что вы используете правильную клавишу и правильно инициализируете объект Facebook.

Кроме того, я также был несколько раз сбит с толку, пытаясь сделать вызовы через Facebook api с помощью другого ключа приложения для Android. Имейте в виду, что в руководстве по Facebook указано, как создать ключ с помощью скомпилированного apk. Этот ключевой хэш будет другим, если вы собираетесь запускать свой код из IDE (я использую Eclipse). Когда вы запускаете свое приложение непосредственно из Eclipse, ключ facebook будет другим, потому что при запуске вашего приложения из Eclipse он использует ключ выпуска по умолчанию для создания вашего приложения.

Из-за этого у меня обычно есть два ключа на портале разработчиков Facebook. Один ключ, созданный с помощью apk, скомпилированного с ключом релиза, используемого для рынка Android, и другой ключ, созданный при запуске кода приложения непосредственно из eclipse.

0 голосов
/ 12 января 2013

Лучший способ правильно выяснить ваш хэш - это маленький кусочек кода.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

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

    }
    ...

Замените com.facebook.samples.loginhowto собственным именем пакета.

0 голосов
/ 21 марта 2011

По какой причине вы выбрали Native App на шаге 7?Я оставил его в стандартном HTML5 / мобильном Интернете и получил образец для работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...