Вход в Facebook предоставляет пользователям удобный и безопасный способ входа в приложение без предварительной регистрации. Используя последнюю версию SDK Facebook для Android, эта функция добавляется в ваше приложение всего за несколько минут.
В этом кратком совете вы узнаете, как добавить кнопку входа Facebook в приложение Android и обрабатывать события, чтобы войти в систему с помощью входа в Facebook.
Премиум вариант
Если вам нужно быстрое решение для настройки аутентификации пользователей в ваших приложениях Android, попробуйте систему аутентификации Android на Envato Market. Это проект с исходным кодом, который позволяет разработчикам создавать регистрации и логины и авторизовать пользователей для своего приложения.
Вы также можете найти разработчиков Android на Envato Studio, чтобы помочь вам с вашими проектами.
Предпосылки
Прежде чем начать, убедитесь, что у вас есть доступ к следующему:
- последняя версия Android Studio
- учетная запись Facebook
1. Зарегистрируйте свое приложение
Все приложения, использующие Facebook SDK, должны быть зарегистрированы в Facebook. Войдите на сайт разработчиков Facebook и нажмите « Создать новое приложение» в правом верхнем углу.
Вам предоставляется форма, которая запрашивает отображаемое имя приложения, пространство имен и категорию . Введите обязательные поля и нажмите « Создать идентификатор приложения» .
На следующем экране вы можете увидеть свой идентификатор приложения . Запишите это, потому что оно понадобится вам позже в этом уроке.
Откройте « Настройки» слева и нажмите кнопку « Добавить платформу» . Во всплывающем окне выберите Android .
В следующей форме введите имя пакета вашего приложения и название вашей Activity
. Если вы еще не создали свое приложение или действие, убедитесь, что вы помните введенные вами значения.
Чтобы заполнить поле Key Hashes , откройте окно терминала и выполните команду keytool
чтобы сгенерировать хэш ключа, используя хранилище ключей отладки, расположенное в ~ / .android / debug.keystore . Вот как должна выглядеть команда.
1
|
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore |
|
Пароль по умолчанию для хранилища ключей отладки — Android . Введите этот пароль при появлении запроса. Вывод команды должен быть строкой из 28 символов. Скопируйте его, вернитесь в браузер и вставьте строку в поле Key Hashes, как показано ниже.
Убедитесь, что для параметра « Единый вход» установлено значение « Да», и нажмите кнопку « Сохранить изменения» . Ваше приложение теперь зарегистрировано.
2. Добавьте Facebook SDK в ваш проект
Facebook SDK доступен на Maven Central . Чтобы использовать этот репозиторий, отредактируйте файл build.gradle в каталоге приложения вашего проекта и добавьте в него следующий код перед списком зависимостей :
1
2
3
|
repositories {
mavenCentral()
}
|
Теперь вы можете добавить Facebook SDK в свой проект как зависимость компиляции . Добавьте следующий код в список зависимостей :
1
|
compile ‘com.facebook.android:facebook-android-sdk:4.0.0’
|
3. Создайте активность
Шаг 1: Определите макет
Создайте новый макет с именем main_activity.xml в res / layout . Это будет очень простой макет с двумя виджетами:
-
LoginButton
чтобы позволить пользователю войти в Facebook -
TextView
для отображения результата последней попытки входа в систему
Вы можете разместить их внутри RelativeLayout
. После включения атрибутов для заполнения и позиционирования виджетов XML макета будет выглядеть примерно так:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<?xml version=»1.0″ encoding=»utf-8″?>
<RelativeLayout xmlns:android=»http://schemas.android.com/apk/res/android»
android:layout_width=»match_parent» android:layout_height=»match_parent»
android:padding=»16dp»
>
<TextView
android:layout_width=»wrap_content»
android:layout_height=»wrap_content»
android:id=»@+id/info»
android:layout_alignParentLeft=»true»
android:layout_alignParentTop=»true»
android:textSize=»18sp»
/>
<com.facebook.login.widget.LoginButton
android:id=»@+id/login_button»
android:layout_width=»wrap_content»
android:layout_height=»wrap_content»
android:layout_centerInParent=»true»
/>
</RelativeLayout>
|
Шаг 2. Создайте класс
Создайте новый класс Java, который расширяет Activity
и назовите его MainActivity.java . Помните, что имя этого класса и пакет, к которому он принадлежит, должны соответствовать значениям, введенным вами при регистрации приложения в Facebook.
Объявите виджеты, которые вы определили в макете действия, как поля этого класса.
1
2
|
private TextView info;
private LoginButton loginButton;
|
Объявите CallbackManager
как другое поле. CallbackManager
, как следует из его названия, используется для управления обратными вызовами, используемыми в приложении.
1
|
private CallbackManager callbackManager;
|
SDK необходимо инициализировать перед использованием любого из его методов. Вы можете сделать это, вызвав sdkInitialize
и передав ему контекст приложения. Добавьте следующий код в метод onCreate
вашей Activity
:
1
|
FacebookSdk.sdkInitialize(getApplicationContext());
|
Затем инициализируйте ваш экземпляр CallbackManager
с помощью метода CallbackManager.Factory.create
.
1
|
callbackManager = CallbackManager.Factory.create();
|
Вызовите setContentView
чтобы установить макет, определенный на предыдущем шаге, как макет этого Activity
а затем используйте findViewById
для инициализации виджетов.
1
2
3
|
setContentView(R.layout.main_activity);
info = (TextView)findViewById(R.id.info);
loginButton = (LoginButton)findViewById(R.id.login_button);
|
Пришло время создать обратный вызов для обработки результатов попыток входа в систему и зарегистрировать его в CallbackManager
. Пользовательские обратные вызовы должны реализовывать FacebookCallback
. Интерфейс имеет методы для обработки каждого возможного результата попытки входа в систему:
- Если попытка входа в систему успешна,
onSuccess
. - Если пользователь отменяет попытку входа,
onCancel
. - Если возникает ошибка,
onError
.
Чтобы зарегистрировать пользовательский обратный вызов, используйте метод registerCallback
. Код для создания и регистрации обратного вызова должен выглядеть следующим образом:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException e) {
}
});
|
Теперь вы можете добавить код к этим методам для отображения соответствующих сообщений, используя метод setText
TextView
.
Когда onSuccess
метод LoginResult
в качестве параметра передается LoginResult
. Получите токен доступа, который он содержит, используя getAccessToken
и используйте его метод getUserId
чтобы получить идентификатор пользователя. Чтобы получить токен в виде String
, используйте getToken
. Отобразите эти значения в TextView
, добавив следующий код в метод onSuccess
:
1
2
3
4
5
6
7
|
info.setText(
«User ID: «
+ loginResult.getAccessToken().getUserId()
+ «\n» +
«Auth Token: «
+ loginResult.getAccessToken().getToken()
);
|
Если пользователь отменяет попытку входа, мы отображаем сообщение «Попытка входа отменена». Добавьте следующий код в метод onCancel
:
1
|
info.setText(«Login attempt canceled.»);
|
Аналогичным образом добавьте следующий код в метод onError
:
1
|
info.setText(«Login attempt failed.»);
|
Нажатие на кнопку входа в систему запускает новую Activity
, которая возвращает результат. Чтобы получить и обработать результат, переопределите метод onActivityResult
вашей Activity
и передайте его параметры методу onActivityResult
в CallbackManager
.
1
2
3
4
|
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
callbackManager.onActivityResult(requestCode, resultCode, data);
}
|
4. Добавьте идентификатор приложения Facebook
Идентификатор приложения, полученный при регистрации приложения, должен быть добавлен в виде строки в файл res / values / strings.xml вашего проекта. Для этого урока вызовите строку facebook_app_id .
1
|
<string name=»facebook_app_id»>123456908761030</string>
|
5. Отредактируйте Манифест
Определите свою Activity
в AndroidManifest.xml . Если это первая Activity
вашего приложения, вам также следует добавить intent-filter
который отвечает на действие android.intent.action.MAIN
.
1
2
3
4
5
6
|
<activity android:name=»com.hathy.fblogin.MainActivity»>
<intent-filter>
<action android:name=»android.intent.action.MAIN»/>
<category android:name=»android.intent.category.LAUNCHER»/>
</intent-filter>
</activity>
|
Добавьте идентификатор приложения в качестве meta-data
.
1
2
|
<meta-data android:name=»com.facebook.sdk.ApplicationId»
android:value=»@string/facebook_app_id»/>
|
Определите FacebookActivity
как другую Activity
которая принадлежит вашему приложению. Он обрабатывает большинство изменений конфигурации сам. Вы должны упомянуть об этом, используя атрибут configChanges
.
1
2
3
4
5
|
<activity android:name=»com.facebook.FacebookActivity»
android:configChanges=
«keyboard|keyboardHidden|screenLayout|screenSize|orientation»
android:theme=»@android:style/Theme.Translucent.NoTitleBar»
android:label=»@string/app_name» />
|
Наконец, вы должны запросить android.permission.INTERNET
чтобы иметь возможность подключаться к серверам Facebook.
1
|
<uses-permission android:name=»android.permission.INTERNET»/>
|
6. Построить и запустить
Ваше приложение завершено. Когда вы соберете его и развернете на устройстве Android, вы увидите кнопку входа в Facebook.
Нажав кнопку входа, вы попадете на страницу Facebook, которая попросит вас войти в систему и авторизовать приложение.
После успешного входа в систему TextView
отобразит идентификатор пользователя и токен авторизации.
Вывод
В этом кратком совете вы узнали, как использовать Facebook SDK для добавления входа Facebook в приложение Android. Вы также узнали, как обрабатывать возможные результаты попытки входа в систему. Чтобы узнать больше о Facebook Login, вы можете перейти по ссылке на Facebook SDK для Android .