Le SDK Facebook pour Android permet aux utilisateurs et utilisatrices de se connecter à votre application à l’aide de la fonctionnalité Facebook Login. Lorsque les internautes se connectent à votre application avec Facebook, ils peuvent autoriser votre application à récupérer des informations sur leur compte ou à exécuter des actions sur Facebook en leur nom.
Pour obtenir un exemple de projet qui illustre la façon d’intégrer Facebook Login à une application Android, voir le FBLoginSample sur GitHub.
Suivez les étapes ci-dessous pour ajouter Facebook Login à votre application.
Veuillez vous connecter à Facebook pour créer des apps ou vous inscrire en tant que développeur.
buildscript { repositories {}}
: dependencies{}
pour dépendre de la dernière version du SDK Facebook Login : Si vous utilisez la version 5.15 ou ultérieure du SDK Facebook pour Android, vous n'avez pas besoin d'ajouter une activité ou de filtrer pour les onglets personnalisés Chrome. Cette fonctionnalité est incluses dans le SDK.
Après avoir intégré Facebook Login, certains évènements d’application sont automatiquement consignés et collectés pour le Gestionnaire d’évènements, à moins que vous ne désactiviez la consignation automatique des évènements d’application. Pour en savoir plus sur les informations collectées et sur la façon de désactiver la consignation automatique des évènements d’application, consultez la page Consignation automatique des évènements d’application.
FacebookActivity
à votre manifeste Android. /app/res/values/strings.xml
.string
avec les noms facebook_app_id
, fb_login_protocol_scheme
et facebook_client_token
, et définissez les valeurs sur votre ID d’app et le token client. Par exemple, si votre ID d’application est 1234
et votre token client 56789
, votre code ressemble à ce qui suit : /app/manifest/AndroidManifest.xml
. meta-data
à l’élément application
pour votre ID d’application et votre token client : application
: <activity android:name="com.facebook.FacebookActivity" android:configChanges= "keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:label="@string/app_name" /> <activity android:name="com.facebook.CustomTabActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="@string/fb_login_protocol_scheme" /> </intent-filter> </activity>
uses-permission
au manifeste après l’élément application
: uses-permission
au manifeste après l’élément application
: Vous pouvez directement activer ou désactiver la consignation automatique des évènements d’application en ajoutant la clé AutoLogAppEventsEnabled
et la valeur « true » ou « false » dans AndroidManifest.xml
.
LoginButton
via le SDK. Le bouton LoginButton
est un élément de l’UI qui englobe les fonctionnalités disponibles dans le LoginManager
. Lorsqu’une personne clique sur ce bouton, la connexion se lance avec les autorisations définies dans le LoginManager
. Facebook Login nécessite une autorisation avancée public_profile, pour être utilisé par des utilisateurs et utilisatrices externes. Le bouton suit l’état de connexion et affiche le texte approprié en fonction de l’état d’authentification de la personne. CallbackManager.Factory.create
. Login button
et enregistrer un rappel dans votre méthode onCreate()
ou onCreateView()
. Les propriétés que vous pouvez personnaliser incluent les suivantes : LoginBehavior
, DefaultAudience
, ToolTipPopup.Style
et les autorisations sur le LoginButton
. Par exemple : private static final String EMAIL = "email"; loginButton = (LoginButton) findViewById(R.id.login_button); loginButton.setReadPermissions(Arrays.asList(EMAIL)); // If you are using in a fragment, call loginButton.setFragment(this); // Callback registration loginButton.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 } });
LoginManager
ou LoginButton
. Si vous l’enregistrez avec LoginButton
, nul besoin de l’enregistrer sur le gestionnaire de connexion. onCreate()
du fragment : 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 } });
LoginResult
est doté du nouveau AccessToken
, et des autorisations approuvées ou refusées les plus récentes. registerCallback
pour que la connexion aboutisse. Vous pouvez suivre les modifications du token d’accès actuel avec la classe AccessTokenTracker
décrite ci-dessous. onActivityResult
, appelez callbackManager.onActivityResult
pour passer les résultats de connexion au LoginManager
via callbackManager
. Si vous utilisez des activités ou des fragments AndroidX, nul besoin de remplacer onActivityResult.
onActivityResult
au callbackManager
. LoginManager
se charge de paramétrer le AccessToken
et le Profile
actuels de cette personne. Le SDK Facebook enregistre ces données dans les préférences communes et se charge de les paramétrer au début de la session. Vous pouvez déterminer si quelqu’un est actuellement connecté en vérifiant AccessToken.getCurrentAccessToken()
et Profile.getCurrentProfile()
. AccessToken.getCurrentAccessToken
avec le SDK à partir du cache ou d’un signet d’app au lancement de votre app à partir d’un démarrage à froid. Vous devez vérifier sa validité dans la méthode onCreate
de votre Activity
:queries
dans votre fichier /app/manifest/AndroidManifest.xml
. Le code suivant montre comment activer Express Login. LoginManager.getInstance().retrieveLoginStatus(this, new LoginStatusCallback() { @Override public void onCompleted(AccessToken accessToken) { // User was previously logged in, can log them in directly here. // If this callback is called, a popup notification appears that says // "Logged in as <User Name>" } @Override public void onFailure() { // No access token could be retrieved for the user } @Override public void onError(Exception exception) { // An error occurred } });