Войти с помощью Google, Facebook и Facbook AccountKit — Получить данные пользователя
Привет, друзья, мы все знаем, что в настоящее время все социальные и открытые приложения позволяют пользователю напрямую подписываться с учетной записью Google или Facebook, а также с номером мобильного телефона, который предоставляется комплектом учетной записи Facebook.
Давайте возьмем небольшой пример для этого входа в социальную сеть.
Добавьте ниже зависимость в свой build.gradle (модуль: приложение)
// Социальный вход
реализация 'com.google.android.gms:play-services-auth:16.0.1'
реализация 'com.facebook.android:аккаунт-кит-sdk:4.39.0'
реализация 'com.facebook.android:facebook-логин:4.36.0'
Добавьте ниже разрешение в файл манифеста
использует-разрешение android_name="android.permission.INTERNET" />метаданные
android:name="com.facebook.sdk.ApplicationId"
андроид: значение = "@string/facebook_app_id" />
метаданные
android:name="com.facebook.accountkit.ApplicationName"
android:value="@string/имя_приложения" />
метаданные
android:name="com.facebook.accountkit.ClientToken"
android:value="@string/account_kit_client_token" />
метаданные
android:name="com.facebook.accountkit.FacebookAppEventsEnabled"
андроид: значение = "ложь" />Мероприятия
android:name="com.facebook.accountkit.ui.AccountKitActivity"
android:theme="@style/AppLoginTheme"
инструменты: заменить = "андроид: тема" />
Мероприятия
android:name="com.facebook.FacebookActivity"
android:configChanges="клавиатура|клавиатура скрыта|макет экрана|размер экрана|ориентация"
android:label="@string/имя_приложения" />
Мероприятия
android:name="com.facebook.CustomTabActivity"
андроид: экспортировано = "истина">
фильтр намерений>
действие android_name="android.intent.action.VIEW" />
категория android_name="android.intent.category.DEFAULT" />
категория android_name="android.intent.category.BROWSABLE" />
данные android_scheme="@string/fb_login_protocol_scheme" />
фильтр намерений>
Мероприятия>
ПриложениеВходТема используется для изменения пользовательского интерфейса экрана комплекта учетной записи FB, как показано ниже.
имя стиля = "AppLoginTheme" parent = "Theme.AccountKit" >
имя элемента = "android: окноNoTitle">правдавещь>
имя элемента = "com_accountkit_primary_color">@color/colorAccentвещь>
имя элемента = "com_accountkit_primary_text_color">@android:цветной/белыйвещь>
имя элемента = "com_accountkit_secondary_text_color">@цвет/черный555вещь>
имя элемента = "com_accountkit_status_bar_color">@color/colorPrimaryDarkвещь>
имя элемента = "com_accountkit_button_background_color">@color/colorPrimaryDarkвещь>
имя элемента = "com_accountkit_button_border_color">@android:цветной/прозрачныйвещь>
имя элемента = "com_accountkit_button_text_color">@android:цветной/белыйвещь>
имя элемента = "com_accountkit_button_pressed_background_color">#D4E4F9вещь>
имя элемента = "com_accountkit_input_accent_color">#D4E4F9вещь>
имя элемента = "com_accountkit_input_border_color">@android:цветной/прозрачныйвещь>
имя элемента = "com_accountkit_input_text_color">@color/colorPrimaryDarkвещь>
имя элемента = "com_accountkit_input_background_color">#D4E4F9вещь>
стиль>
Теперь в вашем вход в систему
учебный класс Добро пожаловатьАктивити : БазоваяАктивити() частное значение FACEBOOK_LOGIN_REQUEST_CODE = 232
частное значение GOOGLE_LOGIN_REQUEST_CODE = 233
приватный lateinit var mGoogleSignInClient : GoogleSignInClient
частный var callbackManager: CallbackManager? знак равно нулевой отвергнуть удовольствие onCreate(сохраненныйInstanceState: Bundle?) супер.onCreate(сохраненныйInstanceState)
setContentView(R.layout.Activity_login)
вал gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.строить()
mGoogleSignInClient = GoogleSignIn.getClient(это, гсо)
btn_mobile_login.setOnClickListener facebookТелефонЛогин()
>
btn_google_login.setOnClickListener googleЛогин()
>
btn_facebook_login.setOnClickListener initFacebookSignIn()
>
>личное развлечение facebookТелефонЛогин()
вал намерение = намерение (это, АккаунтКитАктивити::учебный класс.Ява)
вал configurationBuilder = AccountKitConfiguration.AccountKitConfigurationBuilder(
Тип входа.ТЕЛЕФОН,
Аккаунткитактивити.ResponseType.ТОКЕН)
намерение.putExtra(
АккаунтКитАктивити.ACCOUNT_KIT_ACTIVITY_CONFIGURATION,
ConfigurationBuilder.build())
configurationBuilder.setReadPhoneStateEnabled(истинный)
configurationBuilder.setReceiveSMS(истинный)
startActivityForResult(намерение, FACEBOOK_LOGIN_REQUEST_CODE)
>личное развлечение googleЛогин() вал знакИнтент = mGoogleSignInClient.знакининтент
startActivityForResult(signInIntent, GOOGLE_LOGIN_REQUEST_CODE)
>личное развлечение initFacebookSignIn() callbackManager = CallbackManager.Фабрика.создать()
LoginManager.getInstance().logInWithReadPermissions(
это, Массивы.какСписок("Эл. адрес", "общедоступный профиль", "user_friends"))
LoginManager.getInstance().registerCallback(callbackManager,
объект : FacebookОбратный звонок отвергнуть удовольствие при успехе (результат входа: результат входа) вал запрос = GraphRequest.newMeRequest(
ЛогинРезультат.AccessToken
) данные, _ ->
вал электронная почта = данные?.getString("Эл. адрес") ?: ""
вал идентификатор = данные?.getString("я бы") ?: ""
вал имя = данные?.getString("имя") ?: ""
>
вал комплект = комплект()
комплект.putString("поля", "id,имя,электронная почта,пол,день рождения")
запрос.параметры = комплект
запрос.executeAsync()
>
отвергнуть удовольствие onCancel () Log.d ("Активность входа", «Facebook приОтмене».)
>
отвергнуть удовольствие onError(ошибка: FacebookException) Log.d("Активность входа", «Facebook onError».)
>
>)
>отвергнуть удовольствие onActivityResult (код запроса: Int, код результата: Int, данные: намерение?) супер.onActivityResult (код запроса, код результата, данные)
когда (код запроса) FACEBOOK_LOGIN_REQUEST_CODE -> вал ЛогинРезультат =
данные.getParcelableExtra (AccountKitLoginResult.RESULT_KEY)
когда ЛогинРезультат.ошибка != нулевой -> Распечатать(результат входа.ошибка. тип ошибки.сообщение)
loginResult.wasCancelled() -> Распечатать(«Вход отменен»)
еще -> Результат входа.AccessToken.подать заявление AccountKit.getCurrentAccount(
объект : AccountKitCallback отвергнуть удовольствие при успехе (учетная запись: учетная запись?) вал accountKitId = учетная запись?.я бы
вал Номер телефона = аккаунт?.номер телефона
вал phoneNumberString = phoneNumber?.toString()
>
отвергнуть удовольствие onError (ошибка: AccountKitError?) Распечатать(ошибка)
>
>
)
>
>
>
>
GOOGLE_LOGIN_REQUEST_CODE -> вал задача = GoogleSignIn.getSignedInAccountFromIntent(данные)
обработатьSignInResult(задача)
>
еще -> callbackManager?.onActivityResult (код запроса, код результата, данные)
>
>личное развлечение handleSignInResult (completedTask: Task) пытаться вал результат = завершеноTask.getResult(ApiException::учебный класс.Ява)
результат?.позволять учетная запись ->
общие настройки.социальныеВойти = GOOGLE_LOGIN
вал ID аккаунта = аккаунт.я бы ?: ""
вал электронная почта = учетная запись.Эл. адрес ?: ""
вал имя = учетная запись.показать имя ?: ""
вал профильИзображение = учетная запись.фотоURL?.нанизывать() ?: ""
>
> ловить (e: ApiException) Log.e("GOOGLE", "signInResult: неверный код =" + е.код состояния)
>
>>
Вот и все, вы получите все данные из социального входа и сохраните пользователя для входа в систему, а когда вам нужно выйти из системы из предпочтения, просто вызовите метод ниже
весело выход пользователя ()
когда (общие настройки.социальныеВойти) FACEBOOK_KIT_LOGIN -> AccountKit.logOut()
>
ЛОГИН В ФЕЙСБУК -> LoginManager.getInstance().logOut()
>
GOOGLE_LOGIN -> mGoogleSignInClient.выход()
>
>
>
Этот код очень легко внедрить в ваше приложение и сэкономить ваше время.
привет, ребята, если вам нравится моя история, пожалуйста, поделитесь с друзьями и подпишитесь на меня в следующем посте, увидимся в следующей истории, спасибо.