Как создать логин в Facebook с помощью приложения для Android?
Опубликовано: 5 Января, 2022
В этой статье объясняется, как создать приложение для Android с логином Facebook.
В приложениях Android можно использовать различные функции входа в социальные сети. Здесь мы изучим социальный вход с помощью Facebook , поэтому необходимо интегрировать Facebook SDK в проект, чтобы использовать вход в Facebook.
Ниже приведены различные шаги, как это сделать;
- Первое, что вам нужно сделать, это создать учетную запись разработчика Facebook, а затем создать новое приложение.
- Установите Android Studio (> = 3.0), а затем откройте / создайте проект, в который вы хотите добавить вход в Facebook.
- Добавьте в свой проект следующий код в Gradle Scripts -> build.gradle (Project).
buildscript{
repositories {
jcenter()
}
}
- Теперь добавьте следующий код в Gradle Scripts -> build.gradle (Module: app) с последней версией Facebook Login SDK в свой проект.
dependencies {
implementation 'com.facebook.android:facebook-android-sdk:5.0.0'
}
- Синхронизируйте свой проект
- Теперь откройте файл app -> res -> values -> strings.xml, чтобы добавить следующие строки и заменить [APP_ID] своим APP_ID, который вы можете получить из консоли разработчика Facebook.
<
string
name
=
"facebook_app_id"
>[APP_ID]</
string
>
<
string
name
=
"fb_login_protocol_scheme"
>fb[APP_ID]</
string
>
- Откройте файл app -> manifest -> AndroidManifest.xml и добавьте эту строку вне элемента приложения.
<
uses-permission
android:name
=
"android.permission.INTERNET"
/>
- Добавьте этот элемент метаданных в элемент приложения в файле AndroidManifest.xml:
<
meta-data
android:name
=
"com.facebook.sdk.ApplicationId"
android:value
=
"@string/facebook_app_id"
/>
<
activity
android:name
=
"com.facebook.FacebookActivity"
android:configChanges="keyboard|keyboardHidden
|screenLayout|screenSize
|orientation"
android:label
=
"@string/app_name"
/>
- Теперь первое, что вам потребуется, это Key Hash , поэтому добавьте эти строки в свой класс активности перед кодом входа в Facebook:
@Override
protected
void
onCreate(Bundle savedInstanceState)
{
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
... printHashKey();
...
}
...
public
void
printHashKey()
{
// Add code to print out the key hash
try
{
PackageInfo info
= getPackageManager().getPackageInfo(
"com.android.facebookloginsample"
,
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
(PackageManager.NameNotFoundException e) {
}
catch
(NoSuchAlgorithmException e) {
}
}
- Теперь запустите приложение в эмуляторе или на подключенном устройстве. Вы увидите значение Key Hash, напечатанное в logcat, сохраните его для дальнейшего использования.
- Перейдите в консоль разработчиков Facebook и выберите « Настройки» -> «Основные» -> «Добавить платформу» (внизу страницы), и откроется всплывающее окно для выбора платформы . Выберите Android в качестве платформы.
- Добавьте название пакета вашего проекта в поле "Название пакета Google Play". Добавьте имя класса, в котором логин будет реализован в проекте, например «LoginActivity», а также добавьте значение хэша ключа в «Key Hashes» .
- Теперь вернемся в студию Android, добавьте эту настраиваемую кнопку в свой файл макета * .xml:
<
Button
android:id
=
"@+id/button_facebook"
style
=
"@style/FacebookLoginButton"
android:layout_width
=
"match_parent"
android:layout_height
=
"45dp"
android:layout_gravity
=
"center_horizontal"
android:layout_marginTop
=
"15dp"
android:text
=
"Continue With Facebook"
android:textAllCaps
=
"false"
android:textColor
=
"@android:color/white"
/>
- Добавьте этот код в файл app -> res -> styles.xml:
<
style
name
=
"FacebookLoginButton"
>
<
item
name
=
"android:textSize"
>14sp</
item
>
<
item
name
=
"android:background"
>@drawable/facebook_signin_btn</
item
>
<
item
name
=
"android:paddingTop"
>11dp</
item
>
<
item
name
=
"android:paddingBottom"
>11dp</
item
>
<
item
name
=
"android:paddingLeft"
>15dp</
item
>
<
item
name
=
"android:layout_marginLeft"
>3dp</
item
>
<
item
name
=
"android:layout_marginRight"
>3dp</
item
>
<
item
name
=
"android:layout_height"
>wrap_content</
item
>
<
item
name
=
"android:layout_gravity"
>center_horizontal</
item
>
</
style
>
- Вы можете настроить эту кнопку соответствующим образом или вместо указанной выше настраиваемой кнопки вы можете использовать кнопку Facebook по умолчанию также как Facebook LoginButton.
- Создайте файл с возможностью рисования с именем 'bg_button_facebook.xml' в приложении -> res -> папка с возможностью рисования и вставьте ниже код:
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
shape
android:shape
=
"rectangle"
>
<
corners
android:radius
=
"5dp"
/>
<
solid
android:color
=
"#3B5998"
/>
</
shape
>
- Теперь инициализируйте кнопку в файле * .java и код для инициализации Facebook SDK :
// Declare variables
private
Button mButtonFacebook;
private
CallbackManager callbackManager;
private
LoginManager loginManager;
...
@Override
protected
void
onCreate(Bundle savedInstanceState)
{
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
...
mButtonFacebook
= findViewById(R.id.button_facebook);
FacebookSdk.sdkInitialize(MainActivity.
this
);
callbackManager = CallbackManager.Factory.create();
facebookLogin();
...
mButtonFacebook.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View v)
{
loginManager.logInWithReadPermissions(
MainActivity.
this
,
Arrays.asList(
"email"
,
"public_profile"
,
"user_birthday"
));
}
});
...
}
...
- Добавьте метод facebookLogin вне onCreate () в файл java. Это код для ответа на вход в Facebook.
public
void
facebookLogin()
{
loginManager
= LoginManager.getInstance();
callbackManager
= CallbackManager.Factory.create();
loginManager
.registerCallback(
callbackManager,
new
FacebookCallback<LoginResult>() {
@Override
public
void
onSuccess(LoginResult loginResult)
{
GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new
GraphRequest.GraphJSONObjectCallback() {
@Override
public
void
onCompleted(JSONObject object,
GraphResponse response)
{
if
(object !=
null
) {
try
{
String name = object.getString(
"name"
);
String email = object.getString(
"email"
);
String fbUserID = object.getString(
"id"
);
disconnectFromFacebook();
// do action after Facebook login success
// or call your API
}
catch
(JSONException | NullPointerException e) {
e.printStackTrace();
}
}
}
});
Bundle parameters =
new
Bundle();
parameters.putString(
"fields"
,
"id, name, email, gender, birthday"
);
request.setParameters(parameters);
request.executeAsync();
}
@Override
public
void
onCancel()
{
Log.v(
"LoginScreen"
,
"---onCancel"
);
}
@Override
public
void
onError(FacebookException error)
{
// here write code when get error
Log.v(
"LoginScreen"
,
"----onError: "
+ error.getMessage());
}
});
}
- Теперь добавьте еще один необходимый метод «disconnectFromFacebook» для интеграции входа в систему, аналогично добавьте его вне onCreate. Это используется для отключения приложения от Facebook, так как нет необходимости оставаться на связи.
public
void
disconnectFromFacebook()
{
if
(AccessToken.getCurrentAccessToken() ==
null
) {
return
;
// already logged out
}
new
GraphRequest(
AccessToken.getCurrentAccessToken(),
"/me/permissions/"
,
null
,
HttpMethod.DELETE,
new
GraphRequest
.Callback() {
@Override
public
void
onCompleted(GraphResponse graphResponse)
{
LoginManager.getInstance().logOut();
}
})
.executeAsync();
}
- Добавить метод «onActivityResult» вне OnCreate в той же деятельности:
@Override
protected
void
onActivityResult(
int
requestCode,
int
resultCode,
Intent data)
{
// add this line
callbackManager.onActivityResult(
requestCode,
resultCode,
data);
super
.onActivityResult(requestCode,
resultCode,
data);
}
- Теперь вы закончили кодирование. Запустите приложение на своем устройстве или в эмуляторе. Теперь вы можете войти в систему через Facebook также в своем приложении.
- Если вы хотите загрузить свое приложение в игровой магазин , вам необходимо включить «статус» в верхнем правом разделе на Facebook для разработчиков, для этого сначала добавьте URL-адрес политики конфиденциальности в настройках -> Базовый, как показано на скриншоте ниже. Теперь сохраните изменения и включите статус с панели управления.
Вниманию читателя! Не прекращайте учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по приемлемой для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .