Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: credo56Ответов: 3

Итак, я уже некоторое время внедрил вход через 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) {

        }
  • вы нашли какое-нибудь решение? Richa Shah 21.12.2020

androidfacebook-loginfacebook-graph-apifacebook-android-sdk

Ответы

Ответ 1 · рейтинг 1 · Rezaul Karim

Я использовал следующие шаги для создания хэша ключа для моего приложения в 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. Затем нажмите кнопку Сохранить изменения.

Ответ 2 · Vasant

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

Ответ 3 · nidhi93

Попробуйте использовать этот код для генерации хеш-ключа 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) {

        }

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы