Начало работы с Android SDK
Facebook SDK для Android позволяет без труда интегрировать приложение Android с Facebook. Этот инструмент предлагает целый ряд возможностей.
- «Вход через Facebook»: авторизация с использованием учетных данных Facebook.
- Account Kit: люди могут входить в приложение с помощью номера телефона или адреса эл. почты.
- Диалоги «Поделиться» и «Отправить»: люди могут делиться материалами вашего приложения на Facebook.
- События в приложении: регистрация событий в приложении.
- API Graph: чтение и запись в API Graph.
Настроить приложение для использования 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. В /app/build.gradle на уровне модуля перед dependencies добавьте:
repositories {
mavenCentral()
}5. Добавьте в файл build.gradle compile-зависимость, указав в ней актуальную версию Facebook SDK:
dependencies {
compile 'com.facebook.android:facebook-android-sdk:4.+'
}6. Постройте проект. Теперь вы можете импортировать com.facebook.FacebookSdk в свое приложение.
Facebook SDK необходимо инициализировать перед использованием. Добавьте вызов к FacebookSdk.sdkInitialize от onCreate в классе Application:
// Add this to the header of your file:
import com.facebook.FacebookSdk;
import com.facebook.appevents.AppEventsLogger;
public class MyApplication extends Application {
// Updated your class body:
@Override
public void onCreate() {
super.onCreate();
// Initialize the SDK before executing any other operations,
FacebookSdk.sdkInitialize(getApplicationContext());
AppEventsLogger.activateApp(this);
}
}Добавление 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=
Сохраните хэш-ключ в своем профиле разработчика. Снова запустите примеры приложений и убедитесь, что вы можете войти.