Facebook SDK для Android позволяет пользователям входить в приложение с помощью входа через Facebook. Когда люди входят в приложение через Facebook, они могут предоставить разрешения, чтобы вы могли получать нужную информацию и выполнять действия на Facebook от их имени.
Пример интеграции входа через Facebook в приложение Android: FBLoginSample на GitHub.
Чтобы добавить вход через Facebook в свое приложение, следуйте инструкциям ниже.
Войдите на Facebook, чтобы создать приложение или зарегистрироваться в качестве разработчика.
buildscript { repositories {}}
представлен следующий репозиторий: dependencies{}
, чтобы создать зависимость от новейшей версии SDK для "Входа через Facebook": Если вы используете Facebook SDK (для Android) версии 5.15 или более поздней, то вам не нужно добавлять фильтр действия и намерения в настраиваемые вкладки Chrome. Эта функция включена в SDK.
После интеграции входа через Facebook определенные события в приложении будут автоматически регистрироваться и собираться для Events Manager, если только вы не отключите эту функцию. Подробнее о том, какая информация собирается и как отключить автоматическую регистрацию событий в приложении, см. в разделе Автоматическая регистрация событий в приложении.
FacebookActivity
. /app/res/values/strings.xml
.string
с именами facebook_app_id
, fb_login_protocol_scheme
и facebook_client_token
и установите в качестве значений свои ID приложения и маркер клиента. Например, если ID приложения равен 1234
, а маркер клиента — 56789
, код выглядит следующим образом: /app/manifest/AndroidManifest.xml
. meta-data
в элемент application
для своего ID приложения и маркера клиента: application
: <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>
uses-permission
после элемента application
: uses-permission
после элемента application
: Вы можете напрямую установить для автоматической регистрации событий в приложении значения "true" или "false", если добавите AutoLogAppEventsEnabled
в качестве ключа в файл AndroidManifest.xml
.
LoginButton
из SDK. Кнопка LoginButton
— это элемент интерфейса, который объединяет функции, доступные в LoginManager
. Когда кто-то нажимает кнопку, запускается процесс входа с разрешениями, настроенными в LoginManager
. Чтобы вход через Facebook был доступен внешним пользователям, необходима расширенная версия разрешения public_profile. Функциональность кнопки отслеживает состояние входа и отображает соответствующий текст в зависимости от статуса аутентификации человека. CallbackManager.Factory.create
, чтобы создать callbackManager для обработки откликов входа. Login button
и зарегистрировать обратный вызов в методе onCreate()
или onCreateView()
. Вы можете настроить такие свойства, как LoginBehavior
, DefaultAudience
и ToolTipPopup.Style
, а также разрешения для LoginButton
. Пример: private static final String EMAIL = "email"; loginButton = (LoginButton) findViewById(R.id.login_button); loginButton.setReadPermissions(Arrays.asList(EMAIL)); // If you are using in a fragment, call loginButton.setFragment(this); // Callback registration loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { // App code } @Override public void onCancel() { // App code } @Override public void onError(FacebookException exception) { // App code } });
LoginManager
или LoginButton
. При регистрации с помощью LoginButton
обратный вызов не нужно регистрировать в диспетчере входа. onCreate()
фрагмента: callbackManager = CallbackManager.Factory.create(); LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { // App code } @Override public void onCancel() { // App code } @Override public void onError(FacebookException exception) { // App code } });
LoginResult
передаются новый AccessToken
, а также последние предоставленные или отклоненные разрешения. registerCallback
. Можно отслеживать текущие изменения маркера доступа с помощью описанного ниже класса AccessTokenTracker
. onActivityResult
вызовите callbackManager.onActivityResult
, чтобы передать результаты входа в LoginManager
через callbackManager
. Если вы используете действия или фрагменты AndroidX, переопределять onActivityResult не требуется.
onActivityResult
в callbackManager
. LoginManager
предоставляет ему AccessToken
и Profile
. Facebook SDK сохраняет эти данные в общих настройках и задает их в начале сеанса. Чтобы узнать, выполнил ли человек вход, проверьте AccessToken.getCurrentAccessToken()
и Profile.getCurrentProfile()
. AccessToken.getCurrentAccessToken
можно загрузить вместе с SDK из кэша или из закладки приложения при холодном запуске. Проверить его действительность можно в методе onCreate
Activity
:queries
файла /app/manifest/AndroidManifest.xml
следующий код: Ниже приведен пример кода, позволяющего включить экспресс-вход. LoginManager.getInstance().retrieveLoginStatus(this, new LoginStatusCallback() { @Override public void onCompleted(AccessToken accessToken) { // User was previously logged in, can log them in directly here. // If this callback is called, a popup notification appears that says // "Logged in as <User Name>" } @Override public void onFailure() { // No access token could be retrieved for the user } @Override public void onError(Exception exception) { // An error occurred } });