Recherche…


Syntaxe

  • newInstance : Pour créer une instance unique de la classe d'assistance Facebook.
  • loginUser : Pour vous connecter à l'utilisateur.
  • signOut : pour déconnecter l'utilisateur.
  • getCallbackManager : Obtenir un rappel pour Facebook.
  • getLoginCallback : Pour obtenir un rappel pour la connexion.
  • getKeyHash : pour générer un hachage de clé sur Facebook.

Paramètres

Paramètre Détails
MARQUE Une chaîne utilisée lors de la connexion
FacebookSignInHelper Une référence statique à l'assistant facebook
CallbackManager Un rappel pour les opérations facebook
Activité Un contexte
PERMISSION_LOGIN Un tableau contenant toutes les autorisations requises de facebook pour se connecter.
loginCallback Un rappel pour la connexion facebook

Comment ajouter Facebook Login dans Android

Ajouter les dépendances ci-dessous à votre build.gradle

  // Facebook login
    compile 'com.facebook.android:facebook-android-sdk:4.21.1'

Ajoutez la classe d'assistance ci-dessous à votre paquet utilitaire:

/**
 * Created by Andy
 * An utility for Facebook
 */
public class FacebookSignInHelper {
    private static final String TAG = FacebookSignInHelper.class.getSimpleName();
    private static FacebookSignInHelper facebookSignInHelper = null;
    private CallbackManager callbackManager;
    private Activity mActivity;
    private static final Collection<String> PERMISSION_LOGIN = (Collection<String>) Arrays.asList("public_profile", "user_friends","email");
    private FacebookCallback<LoginResult> loginCallback;



    public static FacebookSignInHelper newInstance(Activity context) {
        if (facebookSignInHelper == null)
            facebookSignInHelper = new FacebookSignInHelper(context);
        return facebookSignInHelper;
    }


    public FacebookSignInHelper(Activity mActivity) {
        try {
            this.mActivity = mActivity;
            // Initialize the SDK before executing any other operations,
            // especially, if you're using Facebook UI elements.
            FacebookSdk.sdkInitialize(this.mActivity);
            callbackManager = CallbackManager.Factory.create();
            loginCallback = new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                   // You are logged into Facebook
                }

                @Override
                public void onCancel() {
                    Log.d(TAG, "Facebook: Cancelled by user");
                }

                @Override
                public void onError(FacebookException error) {
                    Log.d(TAG, "FacebookException: " + error.getMessage());
                }
            };
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * To login user on facebook without default Facebook button
     */
    public void loginUser() {
        try {
            LoginManager.getInstance().registerCallback(callbackManager, loginCallback);
            LoginManager.getInstance().logInWithReadPermissions(this.mActivity, PERMISSION_LOGIN);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    

    /**
     * To log out user from facebook
     */
    public void signOut() {
        // Facebook sign out
        LoginManager.getInstance().logOut();
    }

    public CallbackManager getCallbackManager() {
        return callbackManager;
    }

    public FacebookCallback<LoginResult> getLoginCallback() {
        return loginCallback;
    }

    /**
     * Attempts to log debug key hash for facebook
     *
     * @param context : A reference to context
     * @return : A facebook debug key hash
     */
    public static String getKeyHash(Context context) {
        String keyHash = null;
        try {
            PackageInfo info = context.getPackageManager().getPackageInfo(
                    context.getPackageName(),
                    PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                keyHash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
                Log.d(TAG, "KeyHash:" + keyHash);
            }
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return keyHash;
    }
}

Ajoutez le code ci-dessous dans votre activité:

FacebookSignInHelper facebookSignInHelper = FacebookSignInHelper.newInstance(LoginActivity.this, fireBaseAuthHelper);
facebookSignInHelper.loginUser();

Ajoutez le code ci-dessous à votre OnActivityResult :

 facebookSignInHelper.getCallbackManager().onActivityResult(requestCode, resultCode, data);

Définition des autorisations d'accès aux données du profil Facebook

Si vous souhaitez récupérer les détails du profil Facebook d'un utilisateur, vous devez définir les autorisations pour le même:

loginButton = (LoginButton)findViewById(R.id.login_button);

loginButton.setReadPermissions(Arrays.asList("email", "user_about_me"));

Vous pouvez continuer à ajouter des autorisations comme la liste d'amis, les publications, les photos, etc. Il vous suffit de choisir la bonne autorisation et d'ajouter la liste ci-dessus.

Remarque: vous n'avez pas besoin de définir d'autorisations explicites pour accéder au profil public (prénom, nom, identifiant, sexe, etc.).

Créez votre propre bouton personnalisé pour la connexion Facebook

Une fois que vous avez ajouté la connexion / inscription Facebook, le bouton ressemble à:

entrer la description de l'image ici

La plupart du temps, cela ne correspond pas aux spécifications de conception de votre application. Et voici comment vous pouvez le personnaliser:

<FrameLayout
    android:layout_below="@+id/no_network_bar"
    android:id="@+id/FrameLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <com.facebook.login.widget.LoginButton
        android:id="@+id/login_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="gone" />

    <Button
        android:background="#3B5998"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:id="@+id/fb"
        android:onClick="onClickFacebookButton"
        android:textAllCaps="false"
        android:text="Sign up with Facebook"
        android:textSize="22sp"
        android:textColor="#ffffff" />
</FrameLayout>

Il vous suffit de com.facebook.login.widget.LoginButton le com.facebook.login.widget.LoginButton origine dans un FrameLayout et de FrameLayout sa visibilité.

Ensuite, ajoutez votre bouton personnalisé dans le même FrameLayout . J'ai ajouté quelques exemples de spécifications. Vous pouvez toujours créer votre propre arrière-plan à dessiner pour le bouton facebook et le définir comme arrière-plan du bouton.

La dernière chose que nous faisons est de simplement convertir le clic sur mon bouton personnalisé en un clic sur le bouton du facecbook:

//The original Facebook button
LoginButton loginButton = (LoginButton)findViewById(R.id.login_button);

//Our custom Facebook button
fb = (Button) findViewById(R.id.fb);

public void onClickFacebookButton(View view) {
    if (view == fb) {
        loginButton.performClick();
    }
}

Génial! Maintenant, le bouton ressemble à ceci:

entrer la description de l'image ici

Un guide minimaliste pour la connexion / inscription à Facebook

  1. Vous devez configurer les prérequis .

  2. Ajoutez l'activité Facebook au fichier AndroidManifest.xml :

    <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" />
    
  3. Ajoutez le bouton de connexion à votre fichier XML de mise en page:

    <com.facebook.login.widget.LoginButton
        android:id="@+id/login_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />   
    
  4. Maintenant, vous avez le bouton Facebook. Si l'utilisateur clique dessus, la boîte de dialogue de connexion Facebook apparaîtra en haut de l'écran de l'application. Ici, l'utilisateur peut remplir ses informations d'identification et appuyer sur le bouton Connexion . Si les informations d'identification sont correctes, la boîte de dialogue accorde les autorisations correspondantes et un rappel est envoyé à votre activité d'origine contenant le bouton. Le code suivant montre comment vous pouvez recevoir ce rappel:

    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            // Completed without error. You might want to use the retrieved data here.
        }
    
        @Override
        public void onCancel() {
            // The user either cancelled the Facebook login process or didn't authorize the app.
        }
    
        @Override
        public void onError(FacebookException exception) {
            // The dialog was closed with an error. The exception will help you recognize what exactly went wrong.
        }
    });  
    

Déconnexion de Facebook

Facebook SDK 4.0 et versions ultérieures, voici comment nous nous déconnectons:

com.facebook.login.LoginManager.getInstance().logOut();

Pour les versions antérieures à 4.0, la déconnexion est supprimée en effaçant explicitement le jeton d'accès:

Session session = Session.getActiveSession();
session.closeAndClearTokenInformation();


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow