Начало работы с Facebook SDK для Android

В этой документации объясняется, как интегрировать ваше приложение для Android с Facebook, чтобы создавать приложения с помощью Facebook SDK для Android. Текущая версия Facebook SDK для Android — 12.0.0. Для работы с ней необходим API Android версии 15. Подробную информацию о версиях и функциях см. в разделе Facebook SDK для Android.

При использовании Facebook SDK некоторые события в приложении автоматически регистрируются и собираются для Facebook Analytics, только если вы не выключите автоматическую регистрацию событий. Подробнее о том, какая информация собирается и как отключить автоматическую регистрацию событий, см. здесь.

Вы можете настроить свое приложение для использования Facebook SDK для Android одним из следующих способов:

  • С помощью краткого руководства.
  • Настроив свой проект с использованием Facebook SDK для Android.

Краткое руководство

Чтобы получить ID приложения Facebook, настройте параметры своего приложения и импортируйте Facebook SDK для Android, затем нажмите кнопку ниже и следуйте инструкциям.

Краткое руководство для Android

Разрешение для рекламного ID

Начиная с версии 13.0.0 каждое приложение, которое создается с использованием Facebook SDK для Android, автоматически добавляет в ваше приложение разрешение для рекламного ID. Подробную информацию см. в разделе Рекламный ID — справка для Play Console.

В некоторых случаях вы можете отказаться от добавления разрешения для рекламного ID в свое приложение. Например, если аудитория вашего приложения — дети и семьи, разрешение для рекламного ID может быть неуместным. Чтобы исключить разрешение для рекламного ID из своего приложения, следуйте инструкциям в этой документации.

Установка Android Studio

Создание проекта

Чтобы использовать Facebook SDK в проекте Android Studio, добавьте SDK как зависимость сборки и импортируйте SDK.

  1. Выберите Android Studio | Новый проект | Минимальный SDK.

  2. Выберите API 15: Android 4.0.3 (IceCreamSandwich) или более позднюю версию и создайте новый проект.

  3. Откройте файл Gradle Scripts | build.gradle (Project: <your_project>) и добавьте следующее:

    mavenCentral()
    
  4. Сохраните изменения и закройте файл build.gradle (Project: <your_project>).

  5. Откройте файл Gradle Scripts | build.gradle (Module: app) и в раздел dependencies добавьте следующее:

    implementation 'com.facebook.android:facebook-android-sdk:latest.release'
    

  6. Сохраните изменения и закройте файл build.gradle (Module: app).

  7. Скомпилируйте проект. Теперь com.facebook.FacebookSdk можно импортировать в приложение.

Обновление манифеста

Добавьте ID приложения и маркер клиента в файл строк вашего проекта и обновите файл манифеста. Выполните следующие действия:

  1. Откройте файл /app/res/values/strings.xml в проекте приложения.

  2. Добавьте элементы 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>
  3. Откройте файл /app/manifests/AndroidManifest.xml в проекте приложения.

  4. Добавьте элементы meta-data в элемент application для своего ID приложения и маркера клиента:

    <application android:label="&#064;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>
  5. Добавьте в манифест следующий элемент uses-permission после элемента application:

    <uses-permission android:name="android.permission.INTERNET"/>
  6. (Необязательно): Чтобы отказаться от разрешения для рекламного ID, добавьте в манифест элемент uses-permission после элемента application:

    <uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
  7. Скомпилируйте проект.

Активация общего использования

Если в своем приложении вы указываете ссылки, изображения или видео для общего использования, объявите полномочие FacebookContentProvider в манифесте. Выполните следующие действия:

  1. Откройте файл /app/manifests/AndroidManifest.xml в проекте приложения.

  2. Добавьте в манифест элемент provider для полномочия FacebookContentProvider. Укажите ID приложения в конце значения authorities. Например, если для ID приложения используется 1234, объявление будет выглядеть следующим образом:

    <provider android:authorities="com.facebook.app.FacebookContentProvider1234"
        android:name="com.facebook.FacebookContentProvider"
        android:exported="true" />
    
  3. Скомпилируйте проект.

Запуск примеров приложений

С Facebook SDK для Android предлагаются следующие примеры:

  • HelloFacebookSample — демонстрирует доступ к профилю, обновления статуса и загрузку фото.

Вы можете поэкспериментировать с примерами. Для этого импортируйте 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 вам понадобится следующее:

Выполните следующую команду в командной строке в папке 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 вам понадобится следующее:

Выполните следующую команду в командной строке в папке 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.

Использование Facebook SDK для Android с Maven

Вы можете объявить зависимость Maven с использованием последней версии Facebook SDK для Android.

<dependency>
  <groupId>com.facebook.android</groupId>
  <artifactId>facebook-android-sdk</artifactId>
  <version>PUT_LATEST_VERSION_HERE</version>
</dependency> 

Устранение неполадок примеров приложений

Если при запуске примера приложения у вас возникают проблемы, это может быть связано с хэш-ключом. Вы можете увидеть один из следующих сценариев:

  • Отображается нативный диалог "Вход", но после принятия разрешений вы все ещё находитесь в состоянии выхода из системы. В журнале logcat также содержится исключение:
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
  • Отображается ненативный диалог с сообщением об ошибке: ''..Приложение неправильно настроено для входа в систему Facebook...''.

Проверьте свой хэш-ключ, и вы сможете убедиться в использовании правильного хэш-ключа. 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=

Сохраните хэш-ключ в своем профиле разработчика. Снова запустите примеры и проверьте, можете ли вы беспроблемно входить в систему.