login con facebook

29
LOGIN CON FACEBOOK

Upload: gaqf

Post on 10-Dec-2015

46 views

Category:

Documents


4 download

DESCRIPTION

Ho

TRANSCRIPT

LOGIN CON

FACEBOOK

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

Al crear la App en Facebook se le asigna el “App Id”

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

Facebook

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

Facebook

<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);

}}

App para iniciar sesión en

Facebook

El resultado.

App para iniciar sesión en

Facebook

El resultado.