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

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

Настроить приложение для использования Facebook SDK можно двумя способами:

  • с помощью инструмента «Быстрое начало работы»;
  • настроив проект с помощью Facebook SDK.

Быстрое начало работы

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

Быстрое начало работы для Android

См. также руководства:

Настройка Android Studio

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

1. Откройте Android Studio | New Project | Minimum SDK («Android Studio | Новый проект | Минимальный уровень SDK»)

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

3. После того как вы создадите проект, откройте файл your_app | build.gradle

4. Добавьте следующий код в раздел buildscript { repositories {}} файла build.gradle (Project):

mavenCentral() 

5. Добавьте следующий код в раздел dependencies {} файла build.gradle (module: app), чтобы скомпилировать новейшую версию Facebook SDK:

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

6. Постройте проект. Теперь вы можете импортировать com.facebook.FacebookSdk в свое приложение.

Добавление ID приложения Facebook

Добавьте ID приложения Facebook в файл строк проекта и обновите манифест Android:

1. Откройте файл strings.xml. Пример пути:/app/src/main/res/values/strings.xml.

2. Добавьте новую строку с именем facebook_app_id. В качестве значения используйте свой ID приложения Facebook.

3. Откройте AndroidManifest.xml

4. Добавьте в манифест элемент uses-permission:

<uses-permission android:name="android.permission.INTERNET"/>

5. Добавьте meta-data в элемент application:

<application android:label="@string/app_name" ...>
    ...
    <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
    ...
</application>

Отправка изображений или видео

Если вы хотите опубликовать ссылки, изображения или видео через приложение Facebook для Android, необходимо также объявить в манифесте элемент FacebookContentProvider.

Добавьте ID приложения в конце значения authorities. Например, если ID вашего приложения Facebook — 1234, декларация будет выглядеть так:

<provider android:authorities="com.facebook.app.FacebookContentProvider1234"
          android:name="com.facebook.FacebookContentProvider"
          android:exported="true" />

Использование SDK с ProGuard

Чтобы использовать Facebook SDK для Android с ProGuard, дополнительные действия не требуются. Инструкции по Proguard см. здесь.

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

Следующие примеры предоставляются вместе с SDK:

  • HelloFacebookSample: демонстрирует доступ к профилю, обновления статуса и загрузку фото.
  • RPSSample: демонстрирует использование стандартного диалога «Поделиться», функции публикации Open Graph, инструменты выбора, приглашения и диплинки.
  • Scrumptious: демонстрирует вход в систему, запросы, инструменты выбора, загрузку фото и функции публикации Open Graph.

Вы можете экспериментировать с примерами. Для этого импортируйте SDK в проект Android Studio.

В примерах используются зависимости проекта, а не зависимости из центрального репозитория Maven Central или jCenter. Вот почему при обновлении локальной копии SDK примеры тоже изменяются.

Чтобы быстро запускать примеры приложений, создайте хэш-ключи для вашей среды разработки. Добавьте их в свой профиль разработчика Facebook для примеров приложений. Инструмент Keytool для создания хэш-ключей входит в комплект средств разработки Java SE (JDK), который вы установили в ходе настройки своей среды разработки. OpenSSL можно скачать здесь.

В OS X выполните:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

В Windows выполните:

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl
base64

Будет создана строка длиной 28 символов.

Откройте сайт Facebook для разработчиков. Выполните вход и в раскрывающемся меню справа вверху выберите Настройки разработчика:

В меню выберите Пример приложения, добавьте хэш-ключ и сохраните его в своем профиле:

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

Теперь вы можете скомпилировать и запустить все примеры приложений, в том числе те, в которых используется «Вход через Facebook».

Создание хэш-ключа для разработки

Facebook использует хэш ключа для аутентификации взаимодействий между вашим приложением и приложением Facebook. При запуске приложений, использующих «Вход через Facebook», необходимо добавить хэш-ключ разработки Android в профиль разработчика Facebook.

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

В OS X или Windows хэш-ключ можно сгенерировать или использовать для его создания значение, возвращаемое Settings.getApplicationSignature(Context). Инструкции см. в разделе Запуск примеров приложений.


Дальнейшие действия

После того как вы установите Facebook SDK для Android и настроите ID приложения Facebook, к вашим услугам будут:


Настройка хэш-ключа для выпуска

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

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

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

Чтобы создать хэш ключа выпуска, выполните в Mac или Windows следующую команду, указав в ней псевдоним ключа выпуска и путь к хранилищу ключей. В OS X выполните:

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

В Windows используйте:

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

Используйте пароль, который вы установили, когда создавали ключ выпуска.

Эта команда должна сгенерировать строку из 28 символов. Скопируйте и вставьте хэш-ключ выпуска в настройки Android для ID приложения Facebook.

Убедитесь, что настройки Android для ID приложения Facebook содержат правильное имя пакета и главный класс действий для вашего пакета Android.


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

Вы можете объявить зависимость Maven, указав новейшую доступную версию Android SDK:

<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
  • Появится ненативный диалог «Вход» с сообщением об ошибке: «...App is Misconfigured for facebook login...» (Приложение неправильно настроено для «Входа через 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=

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