Android
Facebook SDK pour Android
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 à:
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:
Un guide minimaliste pour la connexion / inscription à Facebook
Vous devez configurer les prérequis .
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" />
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" />
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();