Ранее в блоге мы уже рассматривали использование аутентификацию с помощью Facebook Login в рамках iOS приложения. В данной статье мы рассмотрим использование сервиса Facebook Login для Android приложений, поддержка которого появится в версии FGX Native 1.16.1.0.
Настройка серверной части была подробно расписана в статье для iOS. Если вы ранее уже настраивали серверную часть для iOS приложения, то можете пропустить этот шаг.
Перейдем непосредственно к настройке приложения.
1. Добавить библиотеку-зависимость Facebook SDK в настройках проекта с помощью диалога Project -> FGX Android Libraries -> Добавить библиотеку-зависимость.
com.facebook.android:facebook-login:16.2.0
(на момент написания статьи (03/09/2023) актуальная версия SDK 16.2.0)
2. Создаем текстовый файл в папке проекта с именем strings.xml, в который добавляем константы, взятые из настроек приложения на сервере.
<resources>
<string name="app_name">APP-NAME</string>
<string name="facebook_app_id">APP-ID</string>
<string name="fb_login_protocol_scheme">fb1234</string>
<string name="facebook_client_token">CLIENT-TOKEN</string>
</resources>
где APP-ID - App ID из шага 8a
CLIENT-TOKEN - Client token из шага 8b
APP-NAME - имя приложения
3. Добавляем файл strings.xml в деплой приложения (Project -> Deployment) для обеих платформ Android32/64. Remote path должен быть res\values\.
4. Вносим изменения в шаблон манифеста AndroidManifest.template.xml сразу после плейсхолдера <%fgx-activities%> и до основной activity
...
<%fgx-activities%>
<!--begin insertion-->
<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"/>
<activity android:name="com.facebook.FacebookActivity"
android:configChanges=
"keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name" />
<activity
android:name="com.facebook.CustomTabActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="@string/fb_login_protocol_scheme" />
</intent-filter>
</activity>
<!--end insertion-->
<activity android:name="com.embarcadero.firemonkey.FMXNativeActivity"
....
Внимание! Из-за ошибки в Facebook Login SDK пока недоступно получение дополнительных данных таких как email, имя и т.д. На данный момент в случае успешной аутентификации сервис возвращает только основной токен.
Мы следим за исправлением этой ошибки и сообщим вам, как только это произойдет.
Спасибо за внимание.