В этой документации объясняется, как интегрировать ваше приложение для Android с Facebook, чтобы создавать приложения с помощью Facebook SDK для Android. Текущая версия Facebook SDK для Android — 12.0.0. Для работы с ней необходим API Android версии 15. Подробную информацию о версиях и функциях см. в разделе Facebook SDK для Android.
При использовании Facebook SDK некоторые события в приложении автоматически регистрируются и собираются для Facebook Analytics, только если вы не выключите автоматическую регистрацию событий. Подробнее о том, какая информация собирается и как отключить автоматическую регистрацию событий, см. здесь.
Вы можете настроить свое приложение для использования Facebook SDK для Android одним из следующих способов:
Чтобы получить ID приложения Facebook, настройте параметры своего приложения и импортируйте Facebook SDK для Android, затем нажмите кнопку ниже и следуйте инструкциям.
Краткое руководство для AndroidНачиная с версии 13.0.0 каждое приложение, которое создается с использованием Facebook SDK для Android, автоматически добавляет в ваше приложение разрешение для рекламного ID. Подробную информацию см. в разделе Рекламный ID — справка для Play Console.
В некоторых случаях вы можете отказаться от добавления разрешения для рекламного ID в свое приложение. Например, если аудитория вашего приложения — дети и семьи, разрешение для рекламного ID может быть неуместным. Чтобы исключить разрешение для рекламного ID из своего приложения, следуйте инструкциям в этой документации.
Чтобы использовать Facebook SDK в проекте Android Studio, добавьте SDK как зависимость сборки и импортируйте SDK.
Выберите Android Studio | Новый проект | Минимальный SDK.
Выберите API 15: Android 4.0.3 (IceCreamSandwich) или более позднюю версию и создайте новый проект.
Откройте файл Gradle Scripts | build.gradle (Project: <your_project>)
и добавьте следующее:
mavenCentral()
Сохраните изменения и закройте файл build.gradle (Project: <your_project>)
.
Откройте файл Gradle Scripts | build.gradle (Module: app)
и в раздел dependencies
добавьте следующее:
implementation 'com.facebook.android:facebook-android-sdk:latest.release'
Сохраните изменения и закройте файл build.gradle (Module: app)
.
Скомпилируйте проект. Теперь com.facebook.FacebookSdk
можно импортировать в приложение.
Добавьте ID приложения и маркер клиента в файл строк вашего проекта и обновите файл манифеста. Выполните следующие действия:
Откройте файл /app/res/values/strings.xml
в проекте приложения.
Добавьте элементы string
с именами facebook_app_id
и facebook_client_token
и установите в качестве значений свои ID приложения и маркер клиента. Например, если для ID приложения указано 1234
, а для маркера клиента — 56789
, код выглядит следующим образом:
<string name="facebook_app_id">1234</string><string name="facebook_client_token">56789</string>
Откройте файл /app/manifests/AndroidManifest.xml
в проекте приложения.
Добавьте элементы meta-data
в элемент application
для своего ID приложения и маркера клиента:
<application android:label="@string/app_name" ...>
...
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/><meta-data android:name="com.facebook.sdk.ClientToken" android:value="@string/facebook_client_token"/>
...
</application>
Добавьте в манифест следующий элемент uses-permission
после элемента application
:
<uses-permission android:name="android.permission.INTERNET"/>
(Необязательно): Чтобы отказаться от разрешения для рекламного ID, добавьте в манифест элемент uses-permission
после элемента application
:
<uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
Скомпилируйте проект.
Если в своем приложении вы указываете ссылки, изображения или видео для общего использования, объявите полномочие FacebookContentProvider
в манифесте. Выполните следующие действия:
Откройте файл /app/manifests/AndroidManifest.xml
в проекте приложения.
Добавьте в манифест элемент provider
для полномочия FacebookContentProvider
. Укажите ID приложения в конце значения authorities
. Например, если для ID приложения используется 1234
, объявление будет выглядеть следующим образом:
<provider android:authorities="com.facebook.app.FacebookContentProvider1234"
android:name="com.facebook.FacebookContentProvider"
android:exported="true" />
Скомпилируйте проект.
С Facebook SDK для Android предлагаются следующие примеры:
Вы можете поэкспериментировать с примерами. Для этого импортируйте Facebook SDK в проект Android Studio. В примерах представлена зависимость проекта вместо зависимости центрального репозитория через maven central или jcenter. Это сделано для того, чтобы при обновлении локальной копии SDK изменения были отображены и в примерах.
Чтобы быстро запустить примеры приложений, вы можете сгенерировать хэш-ключи для своих рабочих сред. Добавьте их в свой профиль разработчика Facebook для примеров приложений. Инструмент Keytool для генерации хэш-ключей входит в комплект средств разработки Java SE (JDK), который вы установили при настройке среды разработки. OpenSSL можно загрузить с сайта OpenSSL.
В OS X выполните следующую команду:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
В ОС Windows вам понадобится следующее:
keytool
) из комплекта средств разработки Java;Выполните следующую команду в командной строке в папке Java SDK. В результате будет создана строка из 28 символов.
keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64
Перейдите на сайт Facebook для разработчиков. Войдите в систему Facebook и, используя раскрывающееся меню в верхнем правом углу, перейдите к пункту Настройки разработчика:
Среди настроек разработчика в меню выберите Пример приложения, затем добавьте и сохраните хэш-ключ в своем профиле:
Если разработка выполняется с использованием нескольких компьютеров, можно добавить несколько хэш-ключей.
Теперь скомпилируйте и запустите все примеры, в том числе и те, которые используют вход через Facebook.
Facebook использует хэш-ключ для авторизации взаимодействия между вашим приложением и приложением Facebook. При запуске приложений, которые используют вход через Facebook, вам необходимо добавить хэш-ключ разработки Android в свой профиль разработчика Facebook.
Для той версии вашего приложения, которую вы выпускаете для себя, также необходимо сгенерировать и установить хэш-ключ выпуска.
В системе OS X или Windows для получения хэш-ключа его можно сгенерировать или же использовать значение, предоставленное Settings.getApplicationSignature(Context)
. Инструкции см. в разделе Запуск примеров приложений.
Для авторизации обмена информацией между вашим приложением и Facebook вам необходимо сгенерировать хэш-ключ выпуска и добавить его в настройки Android в ID приложения Facebook. Без этого ваша интеграция с Facebook может не работать как следует, когда вы будете размещать свое приложение в магазине.
На предыдущем шаге вы должны были обновить настройки разработчика Facebook, указав хэш-ключи для своих сред разработки.
Когда вы публикуете приложение, оно обычно подписывается с использованием другой подписи в вашей среде разработки. Поэтому вам нужно обязательно создать хэш-ключ выпуска и добавить его в настройки Android для ID приложения Facebook.
Чтобы сгенерировать хэш ключа выпуска, выполните в системе Mac или Windows следующую команду, указав в ней псевдоним ключа выпуска и путь к хранилищу ключей.
В системе Mac выполните:
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
В ОС Windows вам понадобится следующее:
keytool
) из комплекта средств разработки Java;Выполните следующую команду в командной строке в папке Java SDK:
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | PATH_TO_OPENSSL_LIBRARY\bin\openssl sha1 -binary | PATH_TO_OPENSSL_LIBRARY\bin\openssl base64
Используйте пароль, установленный при создании ключа выпуска.
В результате выполнения этой команды должна быть сгенерирована строка из 28 символов. Скопируйте и вставьте хеш-ключ выпуска в настройки Android для ID приложения Facebook.
Вы также должны убедиться, что в вашей настройке Android для ID приложения Facebook также указаны правильные имя пакета и класс Main Activity для вашего пакета Android.
Вы можете объявить зависимость Maven с использованием последней версии Facebook SDK для Android.
<dependency> <groupId>com.facebook.android</groupId> <artifactId>facebook-android-sdk</artifactId> <version>PUT_LATEST_VERSION_HERE</version> </dependency>
Если при запуске примера приложения у вас возникают проблемы, это может быть связано с хэш-ключом. Вы можете увидеть один из следующих сценариев:
12-20 10:23:24.507: W/fb4a:fb:OrcaServiceQueue(504): com.facebook.orca.protocol.base.ApiException: remote_app_id does not match stored id
Проверьте свой хэш-ключ, и вы сможете убедиться в использовании правильного хэш-ключа. I
Вы можете также вручную изменить пример кода для использования с правильным хэш-ключом. Например, в классе HelloFacebookSampleActivity
выполните временное изменение для onCreate()
:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Add code to print out the key hash try { PackageInfo info = getPackageManager().getPackageInfo( "com.facebook.samples.hellofacebook", 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) { } ...
Сохраните изменения и перезапустите пример. Проверьте выходное значение logcat для сообщения подобно этому:
12-20 10:47:37.747: D/KeyHash:(936): 478uEnKQV+fMQT8Dy4AKvHkYibo=
Сохраните хэш-ключ в своем профиле разработчика. Снова запустите примеры и проверьте, можете ли вы беспроблемно входить в систему.