Чтобы решить эту проблему в Android 11, нужно добавить блок queries
в файл AndroidMainfest.xml
в проекте:
<manifest package="com.example.app"> <queries> <provider android:authorities="com.facebook.katana.provider.PlatformProvider" /> </queries> ... </manifest>
Вы можете использовать один ID приложения Facebook в нескольких приложениях Android. Просто примените тот же ID в другом приложении для входа, публикации и т. д.
Для диплинков и запуска приложения из уведомлений или иными средствами поддерживается только одна комбинация имени пакета и имени класса.
Инструкции по настройке диплинков для нескольких приложений см. в разделе Ссылки на приложение.
Вы можете самостоятельно заменить строки в Facebook SDK для Android. Для этого предоставьте файл strings.xml
со строками, переведенными на нужный язык.
Файл strings.xml
в каталоге facebook/res/values/
содержит все строки, которые используются в SDK. Имя строковых ресурсов должно быть понятным.
Подробнее см. Руководство по разработке для Android: локализация с использованием ресурсов.
Это можно сделать на странице Файлы для скачивания.
Каждый выпуск Facebook SDK для Android с нативным диалогом «Поделиться» включает APK для приложения Facebook.
До версии 3.14.1 этот APK можно было скачать вместе с SDK. Затем эти инструменты нужно было скачивать по отдельности. Вы найдете APK на странице «Файлы для скачивания».
Просто установите Facebook APK в эмуляторе или на устройстве Android и протестируйте нативный диалог «Поделиться» в своем приложении.
Обычно библиотеки Android используют BuildConfig.DEBUG
, чтобы определить, находится ли приложение в режиме отладки. Но из-за ошибки в Gradle при построении библиотек Android параметр DEBUG
всегда имеет значение false. В качестве обходного пути можно использовать метод FacebookSdk.setIsDebugEnabled(boolean)
. Тогда вы сможете напрямую задать режим отладки из приложения. Это позволит включить регистрацию сообщений отладки через SDK.
Можно также использовать FacebookSdk.addLoggingBehavior(LogginBehavior)
, чтобы разрешить регистрацию разных категорий сообщений. Подробнее см. Справка по SDK: LoggingBehavior.
В диалоговом окне «Поделиться» происходит отправка обратных вызовов в onSuccess
и onCancel
, если пользователь выполняет действие.
onSuccess
используется, если пользователь успешно опубликовал информацию. Более того, если пользователь предоставил приложению разрешения publish_actions
, будет указан postId
в классе Sharer.Result
. Этот метод также будет вызван при нажатии кнопки Cancel, если пользователь не вошел с помощью «Входа через Facebook».
- onCancel
используется, если кто-то нажимает кнопку X в диалоге «Поделиться» или если пользователь вошел с помощью «Входа через Facebook» и нажал кнопку Cancel.
При запросе разрешений на публикацию может возникнуть ошибка:
«Session: an attempt was made to request new permissions for a session that has a pending request» («Сеанс: предпринята попытка запроса новых разрешений в сеансе с запросом, который находится на рассмотрении») или «Attempted to authorize while a request is pending» («Попытка авторизации при наличии запроса, который находится на рассмотрении») {#pendingrequest} Все запросы на разрешения являются асинхронными. Пока не обработан предыдущий запрос, новые разрешения запрашивать нельзя.
Чтобы узнать о многоступенчатой процедуре запроса новых разрешений, ознакомьтесь с нашими примерами приложений, которые входят в SDK (например, Scrumptious или Hello Facebook).
Если в журналах нет ошибок, возможно, причина в том, что запрос вообще не был выполнен. Чтобы выполнить "GraphRequest", вызовите метод "executeAsync".
Чтобы выполнить вход или использовать нативный диалог «Поделиться», необходимо сообщить Facebook ключ, который вы используете для подписи своих приложений.
Он представляет собой хэш SHA-1 ключа, которым вы подписываете приложения. Как правило, применяется не менее двух разных ключей: один — для разработки и отладки, другой — для выпуска. Убедитесь, что на странице настроек приложения указаны оба значения.
Подробнее см. Начало работы с Android SDK: создание хэш-ключа для разработки.
Самая распространенная причина заключается в том, что в файле AndroidManifest.xml
не задан ContentProvider
. Убедитесь, что вы добавили этот параметр вместе с ID приложения в файл AndroidManifest.xml
. См. раздел Публикация материалов в Android: предварительные требования.