login con facebook
DESCRIPTION
HoTRANSCRIPT
Login Con Facebook
Muchas de las aplicaciones que manejamos en nuestro
día a día utilizan una o varias redes sociales como
complemento para que nos podamos identificar en ellas,
compartir información u otros fines.
Estas redes sociales hacen las tareas del programador
más fáciles con sus SDK.
Login Con Facebook
Creamos un nuevo proyecto en Android Studio en
el cual incluyamos una actividad con un fragment
Una vez creado el proyecto, abrimos el archivo “build.gradle (Module:app)”
de su modulo inicial
Importando el SDK de
Facebook en Nuestra App
Agregamos este comando antes de
la sentencia “dependences”
repositories {
mavenCentral()
}
Importando el SDK de
Facebook en Nuestra App
Dentro de “dependences” agregamos el SDK de Facebook para agregarlo
compile 'com.facebook.android:facebook-android-sdk:4.2.0'
Con esto se descargará el SDK de Facebook y será agregado a nuestro
proyecto.
Luego Clickderecho en el
gradle y Sincronizar
Configurar la cuenta de
Facebook como desarrollador
Acceder a la Dirección web https://developers.facebook.com/
Pedirá que nos registremos, lo hacemos y aceptamos los términos y condiciones
En la parte superior de la página seleccionamos “My Apps” y luego a “Add a
new App” Seleccionamos la opción de Android y luego damos clic en “Skip and
create App ID” que se encuentra en la parte superior derecha de la Página
Crear una App ID en Facebook
Le asignamos un nombre y una categoría.
Por seguridad, se solicitará escoger unas imágenes con determinada
descripción.
El App Id es
necesario insertarlo
en el proyecto en el
cual se necesite los
servicios de
Facebook.
Crear una App ID en Facebook
Ahora damos click en “Settings” Luego en “Add a Platform”
Nombre del paquete del
proyecto
Nombre de la Clase principal (MainActivity) del proyecto
Se obtendrá mas Adelante
Generando el Key Hash para el
Logueo de una App de Android en
Debemos ahora agregar nuestro ID generado para nuestra App,
por lo que creamos un nuevo string en el archivo strings.xml
<string name="app_id">My_Id</string>
En el AndroidManifest.xml damos los permisos de acceso a internet
<uses-permission android:name="android.permission.INTERNET"/>
También es necesario agregar un meta-data a la Aplicación
<application android:label="@string/app_name" ...>...<meta-data
android:name="com.facebook.sdk.ApplicationId"android:value="@string/app_id"/>
...</application>
Generando el Key Hash para el Logueo
de una App de Android en Facebook
Generando el Key Hash para el Logueo
de una App de Android en Facebook
Creamos una nueva clase (MyApplication) y escribimos el
siguiente código
public class MyApplication extends Application {@Overridepublic void onCreate() {
super.onCreate();printHashKey(); }
public void printHashKey(){// Add code to print out the key hashtry {
PackageInfo info = getPackageManager().getPackageInfo(“(My Package)",PackageManager.GET_SIGNATURES);
Reemplazar (My Package) por el nombre del paquete
de su App: com.xxxx…
Continua…
Generando el Key Hash para el Logueo
de una App de Android en Facebook
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) {
}}
}
Generando el Key Hash para el Logueo
de una App de Android en Facebook
Al importar la clase para
“Signature” asegurarse de seleccionar la
segunda opción
Importar clases y librerías necesarias con Alt + Intro
La clase anterior imprimirá el KeyHash en el Logcat del Run de
Android Studio.
Ahora es necesario definir esta clase en el AndroidManifest.xml de la
siguiente forma
<applicationandroid:name=".MyApplication"android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" >
...</application>
Generando el Key Hash para el Logueo
de una App de Android en Facebook
Al ejecutar la App, se genera una cadena de 28 caracteres, la cual
se debe copiar y pegar en el espacio para el Key Hash en la
configuración de su cuenta de Facebook Android App ID.
Generando el Key Hash para el Logueo
de una App de Android en Facebook
Se da click en “Save Changes”.
Creando la App para iniciar
sesión en Facebook
En el AndroidManifest.xml indicamos la actividad de Facebook
que pedirá el usuario y la contraseña para iniciar sesión si es
necesario.
<activity android:name="com.facebook.FacebookActivity"android:configChanges=
"keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:theme="@android:style/Theme.Translucent.NoTitleBar"android:label="@string/app_name" />
Creando la App para iniciar
sesión en Facebook
En el Layout del fragment creamos un TextView y un botón de
Facebook Login, el cual es proporsionado por el SDK de
<TextViewandroid:text="@string/hello_world"android:layout_width="fill_parent"android:layout_height="wrap_content"android:id="@+id/dataStatus"android:layout_centerHorizontal="true"/>
<com.facebook.login.widget.LoginButtonandroid:id="@+id/login_button"android:layout_width="fill_parent"android:layout_height="wrap_content" />
Creando la App para iniciar
sesión en Facebook
En la clase que es extendida de Fragment (MainFragment por
ejemplo) se pone el código que se explica a continuación.
Se contarán con variables que gestionaran el inicio de sesión, que
tendrán la información del perfil de quien la inicie y el TextView
para mostrar su nombre de usuario
public static class MainFragment extends Fragment {
private CallbackManager callbackManager;private TextView textView;
private AccessTokenTracker accessTokenTracker;private ProfileTracker profileTracker;
Creando la App para iniciar
sesión en Facebook
Este método de nuestra clase gestiona lo que sucederá en alguna
de las situaciones que se presentan en el inicio de sesión, en este
caso solo cargaremos el perfil de quien haya iniciado sesión.
private FacebookCallback<LoginResult> callback = new FacebookCallback<LoginResult>() {
@Overridepublic void onSuccess(LoginResult loginResult) {
AccessToken accessToken = loginResult.getAccessToken();Profile profile = Profile.getCurrentProfile();displayMessage(profile);
}
@Overridepublic void onCancel() { }
@Overridepublic void onError(FacebookException e) { }
};
Creando la App para iniciar
sesión en Facebook
Importar clases y librerías necesarias con Alt + Intro
Al importar la clase para “Profile” asegurarse de seleccionar la segunda opción
Creando la App para iniciar
sesión en Facebook
En el onCreate() se inicializara el SDK de Facebook al igual que las
variables que gestionarán y obtendrán información del perfil de usuario.
@Overridepublic void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);FacebookSdk.sdkInitialize(getActivity().getApplicationContext());
callbackManager = CallbackManager.Factory.create();
accessTokenTracker= new AccessTokenTracker() {@Overrideprotected void onCurrentAccessTokenChanged(AccessToken oldToken,
AccessToken newToken) { }};
Continua…
Creando la App para iniciar
sesión en Facebook
profileTracker = new ProfileTracker() {@Overrideprotected void onCurrentProfileChanged(Profile oldProfile, Profile
newProfile) {displayMessage(newProfile);
}};
accessTokenTracker.startTracking();profileTracker.startTracking();
}
Necesario para mostrar el TextView en el emulador
Creando la App para iniciar
sesión en Facebook
En el onViewCreated() se inicializara el botón de Login, además se
establecen los permisos que se solicitaran tener acceso.
@Overridepublic void onViewCreated(View view, Bundle savedInstanceState){
super.onViewCreate(view, savedInstanceState);LoginButton loginButton = (LoginButton)
view.findViewById(R.id.login_button);textView = (TextView) view.findViewById(R.id.dataStatus);
loginButton.setReadPermissions("user_friends");loginButton.setFragment(this);loginButton.registerCallback(callbackManager, callback);
}
Continua…
Creando la App para iniciar
sesión en Facebook
@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);callbackManager.onActivityResult(requestCode, resultCode, data);
}
private void displayMessage(Profile profile){if(profile != null){
textView.setText(profile.getName());}
}
Método para actualizar el
TextView.
Creando la App para iniciar
sesión en Facebook
Métodos para guardar y recuperar el estado de la App.
@Overridepublic void onStop() {
super.onStop();accessTokenTracker.stopTracking();profileTracker.stopTracking();
}
@Overridepublic void onResume() {
super.onResume();Profile profile = Profile.getCurrentProfile();displayMessage(profile);
}}
Creando la App para iniciar
sesión en Facebook
Métodos para guardar y recuperar el estado de la App.
@Overridepublic void onStop() {
super.onStop();accessTokenTracker.stopTracking();profileTracker.stopTracking();
}
@Overridepublic void onResume() {
super.onResume();Profile profile = Profile.getCurrentProfile();displayMessage(profile);
}}