Este artículo explica cómo crear una aplicación de Android con un inicio de sesión de Facebook.
Hay varias funciones de inicio de sesión social para usar en las aplicaciones de Android. aquí aprenderemos inicio de sesión social usando Facebookpor lo que es necesaria Integración SDK de Facebook en el proyecto para usar el inicio de sesión de Facebook.
A continuación se muestran los diferentes pasos sobre cómo hacerlo;
- Lo primero que debes hacer es tener Cuenta de desarrollador de Facebook y luego crear una nueva aplicación.
- Instalación Estudio Android(>= 3.0) y luego abra/cree un proyecto en el que desee agregar el inicio de sesión de Facebook.
- Agregue el siguiente código en su proyecto Scripts de Gradle -> build.gradle (Proyecto).
buildscript{
repositories {
jcenter()
}
}
- Ahora, ingresa el siguiente código Scripts de Gradle -> build.gradle (Módulo:aplicación) con el ultima versión del SDK de inicio de sesión de Facebook en su proyecto.
dependencies {
implementation 'com.facebook.android:facebook-android-sdk:5.0.0'
}
- Sincroniza tu proyecto
- Ahora abierto aplicación -> res -> valores -> cadenas.xml archivo para agregar las siguientes líneas y en cambio la [APP_ID] con tu APP_ID, que puedes encontrar en la consola de desarrolladores de Facebook.
<
string
name
=
"facebook_app_id"
>[APP_ID]</
string
>
<
string
name
=
"fb_login_protocol_scheme"
>fb[APP_ID]</
string
>
- Abierto aplicación -> manifestación -> AndroidManifest.xml archivo y agregue esta línea fuera del elemento de solicitud.
<
uses-permission
android:name
=
"android.permission.INTERNET"
/>
- agregar a esto metadatos elemento dentro del elemento de solicitud i AndroidManifest.xml expediente:
<
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"
/>
- Ahora lo primero que necesitas Clave hashasí que ponga estas líneas en su clase de acción antes del código de inicio de sesión de 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) {
}
}
- Ahora ejecute su aplicación en su emulador o dispositivo conectado. Verá el valor Key Hash impreso en logcat, guárdelo para necesidades posteriores.
- Vamos Consola para desarrolladores de Facebook y elige configuración -> Básico -> Agregar plataforma (en la parte inferior de la página) y se abre para elige una plataforma. Elegir Androide como plataforma.
- Ponga su nombre del paquete del proyecto en ‘Nombre del paquete de Google Play’. Agregue el nombre de la clase donde se realizará el inicio de sesión en el proyecto como ‘Actividad de inicio de sesión’ y también agregue el valor hash clave ‘Clave hash’.
- Ahora de vuelta al estudio de Android, agregue este botón personalizado en su *.xml archivo de diseño:
<
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"
/>
- Introduce este código aplicación -> res -> estilos.xml expediente:
<
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
>
- Puede personalizar este botón en consecuencia o, en lugar del botón personalizado anterior, también puede usar el botón predeterminado de Facebook como botón de inicio de sesión de Facebook.
- Nombra un archivo extraíble ‘bg_button_facebook.xml’ en aplicación -> res -> dibujable carpeta y pegue el siguiente código:
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
shape
android:shape
=
"rectangle"
>
<
corners
android:radius
=
"5dp"
/>
<
solid
android:color
=
"#3B5998"
/>
</
shape
>
- Ahora ingrese el botón archivo *.java y algo de código para empezar a utilizar el SDK de Facebook además:
// 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"
));
}
});
...
}
...
- Agregar ‘facebookIniciar sesión’ método externo onCreate() en el archivo java. Este es el código para Respuesta de inicio de sesión de 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());
}
});
}
- Ahora agregue otro método requerido ‘desconectarse de Facebook’ para la integración de inicio de sesión, agregue esto al exterior de onCreate también. Esto se usa para desconectar una aplicación de Facebook porque no necesita permanecer conectada.
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();
}
- Agregar ‘en el resultado de la acción’ método externo onCreate en la misma actividad:
@Override
protected
void
onActivityResult(
int
requestCode,
int
resultCode,
Intent data)
{
// add this line
callbackManager.onActivityResult(
requestCode,
resultCode,
data);
super
.onActivityResult(requestCode,
resultCode,
data);
}
- Ahora ya ha terminado con la codificación. Ejecute su aplicación en su dispositivo o emulador. Tu puedes ahora iniciar sesión con Facebook también en su aplicación.
- Si usted es Quieres subir tu aplicación a Play Storeentonces tienes que habilitar ‘estado’ de la sección superior derecha en Facebook para desarrolladores, para este primero agregar URL de política de privacidad en ajustes -> Básico como se muestra en la captura de pantalla a continuación. Ahora guarde los cambios y habilite el estado desde el tablero.