Você está na página 1de 7

Tutorial Login Facebook SDK com

Android Studio
Por: Nicollas Freitas 10/09/2015

Para este tutorial estou utilizando as seguintes verses:

Facebook SDK 4.6.0

Android Studio 1.3.2

Nesta parte II do tutorial irei mostrar como fazer o Login com o Facebook
SDK na sua aplicao.

Pr-requisitos

1. Certificar de ter criado o seu ID APP em


http://developers.facebook.com/apps
2. Gerar sua keyHash para o dispositivo.
3. Adicionado o hash chave para sua pgina APP

Ver a primeira parte do Tutorial (Tutorial de Integrao Facebook SDK


com Android Studio).

1. Adicionando Facebook Login

Segundo o site do prprio Facebook segue o link:


(https://developers.facebook.com/docs/facebook-login/android)
O SDK do Facebook para Android permite as pessoas loguem em seu aplicativo com o
Facebook Login. Quando as pessoas entrar em sua app com Facebook, ele pode
conceder permisses para seu aplicativo para que voc possa recuperar informaes
ou executar aes em Facebook em seu nome.

A maneira mais simples de adicionar Facebook Faa o login em sua app adicionar
loginButton do SDK. Esta uma implementao exibio personalizada de um boto.
Voc pode usar esse boto em seu aplicativo para implementar Facebook Login.
2. Criando Layout
Nosso layout principal deve conter o widget LoginButton. O widget loginButton faz
parte do pacote SDK Facebook. Ns simplesmente adicionamos o boto do Login do
Facebook com o nome completo da classe: com.facebook.login.widget.LoginButton.

Segue o codigo abaixo da main_activity:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
O cdigo para o nosso layout dada como ,
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">

<com.facebook.login.widget.LoginButton
android:id="@+id/login_button"
android:layout_width="200sp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp" />

</LinearLayout>
3. Criando Activity

Precisamos inicializar o Facebook SDK em nossa atividade principal. Isso pode ser feito
da seguinte forma:

FacebookSdk.sdkInitialize(getApplicationContext());

Em seguida, o Widget loginButton devem ser definidos. A permisso para acessar o


perfil do Facebook e e-mail definido utilizando as setReadPermissions() mtodo do
objeto loginButton. Aqui ns definimos como:

login.setReadPermissions(Arrays.asList("public_profile", "email")

);

public_profile e email so as permisses pedidas para que o usurio fornea. E login


o objeto loginButton. Em seguida, registramos um callback com o boto de login.
Quando o usurio se autentica com sucesso o mtodo onSuccess() chamado. Em
uma autenticao bem sucedida, podemos obter o token de acesso. Ele pode ser
obtido da seguinte maneira:

AccessToken.getCurrentAccessToken();

Usando o token de acesso podemos fazer solicitaes a API Facebook Graph com a
classe GraphRequest. Ns precisamos adicionar os campos que solicitarem em um
Bundle. Isso definido como parmetro para a solicitao. O pedido executado,
chamando o mtodo executeAsync() no objeto GraphRequest. Quando o pedido for
concludo OnCompleted() mtodo chamado e a resposta obtida em formato JSON.

Registro do Callback

Para responder a um resultado login, voc precisa registrar um retorno de chamada


com loginButton. Voc adiciona o retorno de chamada para sua atividade ou mtodo
de fragmento onCreate():
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(this.getApplicationContext());

callbackManager = CallbackManager.Factory.create();

LoginManager.getInstance().registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// App code
}

@Override
public void onCancel() {
// App code
}

@Override
public void onError(FacebookException exception) {
// App code
}
});
}

Se o login for bem-sucedido, o parmetro LoginResult tem o novo AccessToken, e as


permisses mais recentemente concedido ou negado.
O cdigo completo da MainActivity.java segue abaixo:
package com.tryno.facebooklogin;

public class MainActivity extends AppCompatActivity {


CallbackManager callbackManager;
LoginButton mButtonLogin;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.activity_main);

callbackManager = CallbackManager.Factory.create();

mButtonLogin = (LoginButton) view.findViewById(R.id.login_button);


mButtonLogin.setReadPermissions(Arrays.asList("public_profile", "email))

mButtonLogin.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {


@Override
public void onSuccess(LoginResult loginResult) {
AccessToken accessToken = loginResult.getAccessToken();

System.out.println("Facebook Login Successful!");


System.out.println("Logged in user Details : ");
System.out.println("--------------------------");
System.out.println("User ID : " + accessToken.getUserId());
System.out.println("Authentication Token : " + accessToken.getToken());

Toast.makeText(getActivity().getApplicationContext(), "Sucesso ao Logar!",


Toast.LENGTH_LONG).show();
}
@Override
public void onCancel() {
Toast.makeText(getActivity().getApplicationContext(), "Login Cancelado pelo usuario!",
Toast.LENGTH_LONG).show();
}
@Override
public void onError(FacebookException e) {
Toast.makeText(getActivity().getApplicationContext(), "Login sem sucesso!",
Toast.LENGTH_LONG).show();
}
});
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mCallbackManager.onActivityResult(requestCode, resultCode, data);
}
Finalmente executar o cdigo no emulador ou dispositivo fsico.
Referencias:

http://code2care.org/2015/facebook-android-sdk-v4.1.0-integration-android-studio/

http://www.learn2crack.com/2015/06/android-facebook-sdk-implementation.html

https://developers.facebook.com/docs/facebook-login/android