Android API входа в Facebook переходит непосредственно к onCancel(), когда установлено приложение Facebook

Итак, я уже некоторое время внедрил вход через Facebook в свое приложение для Android, и уже несколько месяцев он работает нормально.

Проблемы начались, когда я обновил версию SDK до одной из последних (4.22.0). После этого нажатие кнопки «Войти через Facebook» просто вызывает короткую попытку входа в систему, а затем ничего. Из журнала я вижу, что onCancel() в FacebookCallback вызывается, но это все.

Все работает нормально, когда я удаляю приложение Facebook. Я прохожу через веб-просмотр, а затем могу продолжить (вызывается onSuccess()).

Я попытался вернуться к версии SDK, которую использовал ранее, но безуспешно. Я проверил, что мои KeyHash совпадают (как отладочные, так и выпускные) с тем, что находится на панели инструментов разработчика Facebook, и это соответствует. Идентификатор моего приложения тоже совпадает».

Я знаю, что я вышел из системы до попытки входа в систему, так как я принудительно выхожу из системы с помощью LoginManager.

Это очень странно. Я использовал следующий код для генерации своего KeyHash:

try {
            PackageInfo info = getPackageManager().getPackageInfo(
                    "***.*****.************",
                    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 (PackageManager.NameNotFoundException e) {

        } catch (NoSuchAlgorithmException e) {

        }

person credo56    schedule 24.05.2017    source источник
comment
вы нашли какое-нибудь решение?   -  person Richa Shah    schedule 21.12.2020


Ответы (3)


Я использовал следующие шаги для создания хэша ключа для моего приложения в facebook:

  1. Сначала откройте терминал в Mac (откройте командную строку в Windows).
  2. Перейдите в терминале в каталог, где хранится ваш Android debug.keystore. В основном в Windows он находится в папке «/Users/имя_пользователя/.android/», а в Windows — в C:\Documents and Settings.android).

  3. В Mac — введите cd ~/.android и нажмите Enter, чтобы перейти в каталог .android.

  4. Как только вы окажетесь в каталоге «.android», выполните следующую команду, чтобы получить ключ отладки. keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1-binary | OpenSSL base64

  5. Используйте ту же процедуру, чтобы получить ключ Release. Просто замените команду следующей и используйте псевдоним ключа выпуска. keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | "ПУТЬ ДЛЯ openssl.exe" sha1 -binary | OpenSSL base64

  6. Когда вам будет предложено ввести пароль, введите android и нажмите Enter.

  7. Скопируйте напечатанное в терминале значение, оканчивающееся знаком «=», и вставьте его в поле Key Hash в Facebook. Затем нажмите кнопку Сохранить изменения.

person Rezaul Karim    schedule 18.06.2017

Вам нужно иметь подписанный aPK KeyHash, поэтому запустите подписанный APk и этот подписанный APK на своем устройстве и получите подписанный keyHash из журнала отладки. Этот ключевой хеш обновите в консоли разработчика facebook.

person Vasant    schedule 24.05.2017

Попробуйте использовать этот код для генерации хеш-ключа fackbook.

 try {
            PackageInfo info = getPackageManager().getPackageInfo("enter your package", 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 (PackageManager.NameNotFoundException e) {

        } catch (NoSuchAlgorithmException e) {

        }
person nidhi93    schedule 24.05.2017