Site icon C1CTech

Integrating Facebook Login in Android App

&NewLine;<p>This post is about how to integrate Facebook login into an Android application&period;<&sol;p> &NewLine; &NewLine; &NewLine; &NewLine;<div class&equals;"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex"> &NewLine;<div class&equals;"wp-block-button aligncenter"><a class&equals;"wp-block-button&lowbar;&lowbar;link has-white-color has-text-color has-background" style&equals;"background-color&colon; &num;280449&semi;" href&equals;"https&colon;&sol;&sol;github&period;com&sol;arunk7839&sol;FLoginExp"><strong>DOWNLOAD CODE<&sol;strong><&sol;a><&sol;div> &NewLine;<div> <&sol;div> &NewLine;<&sol;div> &NewLine;<p><amp-youtube layout&equals;"responsive" width&equals;"1200" height&equals;"675" data-videoid&equals;"OTA6Wl9X5-g" title&equals;"Integrating Facebook Login in Android App"><a placeholder href&equals;"https&colon;&sol;&sol;youtu&period;be&sol;OTA6Wl9X5-g"><img src&equals;"https&colon;&sol;&sol;i&period;ytimg&period;com&sol;vi&sol;OTA6Wl9X5-g&sol;hqdefault&period;jpg" layout&equals;"fill" object-fit&equals;"cover" alt&equals;"Integrating Facebook Login in Android App"><&sol;a><&sol;amp-youtube><&sol;p> &NewLine;<h4><span style&equals;"color&colon; &num;000080&semi;"><strong>The Facebook SDK<&sol;strong><&sol;span><&sol;h4> &NewLine;<p>The Facebook SDK for Android enables people to sign into your app with Facebook Login&period; When people log into your app with Facebook they can grant permissions to your app so you can retrieve information or perform actions on Facebook on their behalf&period;<&sol;p> &NewLine;<p>Follow the steps below to add Facebook Login to your app&colon;<&sol;p> &NewLine;<p>1 &period; Go to <a href&equals;"https&colon;&sol;&sol;developers&period;facebook&period;com&sol;"><strong><span style&equals;"color&colon; &num;000080&semi;">facebook developer site<&sol;span><&sol;strong><&sol;a> and log in using your Facebook account&period;<&sol;p> &NewLine;<p>2 &period; After login&comma; click on<span style&equals;"color&colon; &num;008000&semi;"><strong> My Apps<&sol;strong><&sol;span> option shown at the top right&period;<&sol;p> &NewLine;<p>3 &period; Now&comma; select an app or create a new one&period;<&sol;p> &NewLine;<p><img class&equals;"alignnone size-full wp-image-3029" src&equals;"https&colon;&sol;&sol;c1ctech&period;com&sol;wp-content&sol;uploads&sol;2022&sol;02&sol;a&period;png" alt&equals;"" width&equals;"658" height&equals;"112" &sol;><&sol;p> &NewLine;<p>4 &period; Choose <span style&equals;"color&colon; &num;008000&semi;"><strong>Facebook Login Setup<&sol;strong><&sol;span> option from the left side and then click on <strong><span style&equals;"color&colon; &num;008000&semi;">Quickstart<&sol;span>&period;<&sol;strong><&sol;p> &NewLine;<p>5 &period; Now&comma; select the platform as <span style&equals;"color&colon; &num;008000&semi;"><strong>Android<&sol;strong><&sol;span>&period;<&sol;p> &NewLine; &NewLine; &NewLine; &NewLine;<p>6 &period; From the next screen&comma; instead of downloading the Facebook SDK we will import it&period; Click on <span style&equals;"color&colon; &num;008000&semi;"><strong>next<&sol;strong><&sol;span>&period;<&sol;p> &NewLine;<h5><span style&equals;"color&colon; &num;000080&semi;"><strong>Import the Facebook SDK<&sol;strong><&sol;span><&sol;h5> &NewLine;<p>7 &period; Open Project-level build&period;gradle file and add the <strong><span style&equals;"color&colon; &num;008000&semi;">mavenCentral&lpar;&rpar;<&sol;span><&sol;strong> repository to download the SDK from the Maven Central Repository&colon;<&sol;p> &NewLine;<pre>buildscript &lbrace;<br &sol;> repositories &lbrace;<br &sol;> google&lpar;&rpar;<br &sol;> <span style&equals;"color&colon; &num;008000&semi;"><strong>mavenCentral&lpar;&rpar;<&sol;strong><&sol;span><br &sol;> &rcub;<&sol;pre> &NewLine;<p>8 &period; Open App-level build&period;gradle file and add the latest version of the SDK dependency under the dependencies section and then click on<strong><span style&equals;"color&colon; &num;008000&semi;"> Sync Now<&sol;span><&sol;strong>&period;<&sol;p> &NewLine;<pre>dependencies &lbrace;<br &sol;> implementation 'com&period;facebook&period;android&colon;facebook-android-sdk&colon;latest&period;release'<br &sol;>&rcub;<&sol;pre> &NewLine;<p>9 &period; Add the following statements to import the Facebook SDK packages&period;<&sol;p> &NewLine;<pre>import com&period;facebook&period;FacebookSdk&semi;<br &sol;>import com&period;facebook&period;appevents&period;AppEventsLogger&semi;<&sol;pre> &NewLine;<h5><span style&equals;"color&colon; &num;000080&semi;"><strong>Add package and activity class name<&sol;strong><&sol;span><&sol;h5> &NewLine;<p>10 &period; Enter your package name and default activity name with the fully qualified path and then click on <span style&equals;"color&colon; &num;008000&semi;"><strong>save<&sol;strong><&sol;span>&period;<&sol;p> &NewLine;<p><img class&equals;"alignnone size-large wp-image-3031" src&equals;"https&colon;&sol;&sol;c1ctech&period;com&sol;wp-content&sol;uploads&sol;2022&sol;02&sol;b-1-e1643784099570-1024x368&period;png" alt&equals;"" width&equals;"1024" height&equals;"368" &sol;><&sol;p> &NewLine;<p>11 &period; The next window asks for setting up the key hashes&period; Run the provided commands on mac terminal&sol;windows cmd and then add the generated hash key in the Key hashes field&period;<&sol;p> &NewLine;<p>12 &period; Enable <span style&equals;"color&colon; &num;008000&semi;"><strong>Single Sign-on <&sol;strong><&sol;span>for your app&period;<&sol;p> &NewLine;<p><img class&equals;"alignnone size-large wp-image-3036" src&equals;"https&colon;&sol;&sol;c1ctech&period;com&sol;wp-content&sol;uploads&sol;2022&sol;02&sol;c-1024x225&period;png" alt&equals;"" width&equals;"1024" height&equals;"225" &sol;><&sol;p> &NewLine;<h5><span style&equals;"color&colon; &num;000080&semi;"><strong><span class&equals;"lfloat &lowbar;ohe &lowbar;c24 &lowbar;50f4 &lowbar;50f7"><span class&equals;"&lowbar;1l7d &lowbar;50f9 &lowbar;2iel">Edit Your Resources and Manifest<&sol;span><&sol;span><&sol;strong><&sol;span><&sol;h5> &NewLine;<p>13 &period; Open your <strong><span style&equals;"color&colon; &num;008000&semi;">&sol;app&sol;res&sol;values&sol;strings&period;xml<&sol;span> <&sol;strong>file and add the below string elements&colon;<&sol;p> &NewLine;<pre>&lt&semi;resources&gt&semi;<br &sol;> <span style&equals;"color&colon; &num;008000&semi;"><strong> &lt&semi;&excl;--<&sol;strong><&sol;span><br &sol;><span style&equals;"color&colon; &num;008000&semi;"><strong> On the Dashboard&comma; navigate to Settings &gt&semi; Basic &gt&semi; App ID&period;<&sol;strong><&sol;span><br &sol;><span style&equals;"color&colon; &num;008000&semi;"><strong> --&gt&semi;<&sol;strong><&sol;span><br &sol;> &lt&semi;string name&equals;"facebook&lowbar;app&lowbar;id"&gt&semi;1062987424533270&lt&semi;&sol;string&gt&semi;<br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &lt&semi;&excl;--<&sol;span><&sol;strong><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> same as facebook app id but prefix with fb <&sol;span><&sol;strong><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> --&gt&semi;<&sol;span><&sol;strong><br &sol;> &lt&semi;string name&equals;"fb&lowbar;login&lowbar;protocol&lowbar;scheme"&gt&semi;fb1062987424533270&lt&semi;&sol;string&gt&semi;<br &sol;><br &sol;> <strong><span style&equals;"color&colon; &num;008000&semi;"> &lt&semi;&excl;--<&sol;span><&sol;strong><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> On the Dashboard&comma; navigate to Settings &gt&semi; Advanced &gt&semi; Security &gt&semi; Client token&period;<&sol;span><&sol;strong><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> --&gt&semi;<&sol;span><&sol;strong><br &sol;> &lt&semi;string name&equals;"facebook&lowbar;client&lowbar;token"&gt&semi;f946459314g319906e85bebb758ed5fe&lt&semi;&sol;string&gt&semi;<br &sol;><br &sol;>&lt&semi;&sol;resources&gt&semi;<&sol;pre> &NewLine;<p>14 &period; Open  <span style&equals;"color&colon; &num;008000&semi;"><strong>&sol;app&sol;manifest&sol;AndroidManifest&period;xml<&sol;strong> <&sol;span>file&colon;<&sol;p> &NewLine;<ul> &NewLine;<li>Add meta-data elements to the <strong><span style&equals;"color&colon; &num;008000&semi;">application<&sol;span><&sol;strong> element for your app ID and client access token&colon;<&sol;li> &NewLine;<&sol;ul> &NewLine;<pre>&lt&semi;application android&colon;label&equals;"&commat;string&sol;app&lowbar;name" &period;&period;&period;&gt&semi;<br &sol;> &period;&period;&period;<br &sol;>&lt&semi;meta-data android&colon;name&equals;"com&period;facebook&period;sdk&period;ApplicationId" android&colon;value&equals;"&commat;string&sol;facebook&lowbar;app&lowbar;id"&sol;&gt&semi;<br &sol;>&lt&semi;meta-data android&colon;name&equals;"com&period;facebook&period;sdk&period;ClientToken" android&colon;value&equals;"&commat;string&sol;facebook&lowbar;client&lowbar;token"&sol;&gt&semi;<br &sol;> &period;&period;&period;<br &sol;> &lt&semi;&sol;application&gt&semi;<&sol;pre> &NewLine;<ul> &NewLine;<li>Add an activity for Facebook&comma; and an activity and intent filter for Chrome Custom Tabs inside your <span style&equals;"color&colon; &num;008000&semi;"><strong>application<&sol;strong><&sol;span> element&colon;<&sol;li> &NewLine;<&sol;ul> &NewLine;<pre>&lt&semi;activity<br &sol;> android&colon;name&equals;"com&period;facebook&period;FacebookActivity"<br &sol;> android&colon;configChanges&equals;"keyboard&vert;keyboardHidden&vert;screenLayout&vert;screenSize&vert;orientation"<br &sol;> android&colon;label&equals;"&commat;string&sol;app&lowbar;name" &sol;&gt&semi;<br &sol;><br &sol;>&lt&semi;activity<br &sol;> android&colon;name&equals;"com&period;facebook&period;CustomTabActivity"<br &sol;> android&colon;exported&equals;"true"&gt&semi;<br &sol;> &lt&semi;intent-filter&gt&semi;<br &sol;> &lt&semi;action android&colon;name&equals;"android&period;intent&period;action&period;VIEW" &sol;&gt&semi;<br &sol;><br &sol;> &lt&semi;category android&colon;name&equals;"android&period;intent&period;category&period;DEFAULT" &sol;&gt&semi;<br &sol;> &lt&semi;category android&colon;name&equals;"android&period;intent&period;category&period;BROWSABLE" &sol;&gt&semi;<br &sol;><br &sol;> &lt&semi;data android&colon;scheme&equals;"&commat;string&sol;fb&lowbar;login&lowbar;protocol&lowbar;scheme" &sol;&gt&semi;<br &sol;> &lt&semi;&sol;intent-filter&gt&semi;<br &sol;>&lt&semi;&sol;activity&gt&semi;<&sol;pre> &NewLine;<ul> &NewLine;<li>Add a uses-permission element to the manifest above the <strong><span style&equals;"color&colon; &num;008000&semi;">application<&sol;span><&sol;strong> element&colon;<&sol;li> &NewLine;<&sol;ul> &NewLine;<pre>&lt&semi;uses-permission android&colon;name&equals;"android&period;permission&period;INTERNET" &sol;&gt&semi;<&sol;pre> &NewLine;<h4><span style&equals;"color&colon; &num;000080&semi;"><strong>Creating the Layout File<&sol;strong><&sol;span><&sol;h4> &NewLine;<p>The below layout file consist of a <strong><span style&equals;"color&colon; &num;008000&semi;">LoginButton<&sol;span><&sol;strong> from the Facebook SDK and two Textviews &lpar;to display the user name and email&rpar;&period;<&sol;p> &NewLine;<p><strong><span style&equals;"color&colon; &num;0000ff&semi;">activity&lowbar;main&period;xml<&sol;span><&sol;strong><&sol;p> &NewLine;<pre>&lt&semi;&quest;xml version&equals;"1&period;0" encoding&equals;"utf-8"&quest;&gt&semi;<br &sol;>&lt&semi;androidx&period;constraintlayout&period;widget&period;ConstraintLayout xmlns&colon;android&equals;"http&colon;&sol;&sol;schemas&period;android&period;com&sol;apk&sol;res&sol;android"<br &sol;> xmlns&colon;app&equals;"http&colon;&sol;&sol;schemas&period;android&period;com&sol;apk&sol;res-auto"<br &sol;> xmlns&colon;tools&equals;"http&colon;&sol;&sol;schemas&period;android&period;com&sol;tools"<br &sol;> android&colon;layout&lowbar;width&equals;"match&lowbar;parent"<br &sol;> android&colon;layout&lowbar;height&equals;"match&lowbar;parent"<br &sol;> tools&colon;context&equals;"&period;MainActivity"&gt&semi;<br &sol;><br &sol;> &lt&semi;TextView<br &sol;> android&colon;id&equals;"&commat;&plus;id&sol;userName"<br &sol;> android&colon;layout&lowbar;width&equals;"match&lowbar;parent"<br &sol;> android&colon;layout&lowbar;height&equals;"wrap&lowbar;content"<br &sol;> android&colon;gravity&equals;"center"<br &sol;> android&colon;textColor&equals;"&commat;color&sol;purple&lowbar;500"<br &sol;> android&colon;textSize&equals;"21sp"<br &sol;> app&colon;layout&lowbar;constraintBottom&lowbar;toBottomOf&equals;"parent"<br &sol;> app&colon;layout&lowbar;constraintEnd&lowbar;toEndOf&equals;"parent"<br &sol;> app&colon;layout&lowbar;constraintHorizontal&lowbar;bias&equals;"0&period;5"<br &sol;> app&colon;layout&lowbar;constraintStart&lowbar;toStartOf&equals;"parent"<br &sol;> app&colon;layout&lowbar;constraintTop&lowbar;toTopOf&equals;"parent" &sol;&gt&semi;<br &sol;><br &sol;> &lt&semi;TextView<br &sol;> android&colon;id&equals;"&commat;&plus;id&sol;userEmail"<br &sol;> android&colon;layout&lowbar;width&equals;"match&lowbar;parent"<br &sol;> android&colon;layout&lowbar;height&equals;"wrap&lowbar;content"<br &sol;> android&colon;layout&lowbar;marginTop&equals;"25dp"<br &sol;> android&colon;gravity&equals;"center"<br &sol;> android&colon;textColor&equals;"&commat;color&sol;purple&lowbar;500"<br &sol;> android&colon;textSize&equals;"21sp"<br &sol;> app&colon;layout&lowbar;constraintEnd&lowbar;toEndOf&equals;"&commat;&plus;id&sol;userName"<br &sol;> app&colon;layout&lowbar;constraintStart&lowbar;toStartOf&equals;"&commat;&plus;id&sol;userName"<br &sol;> app&colon;layout&lowbar;constraintTop&lowbar;toBottomOf&equals;"&commat;&plus;id&sol;userName" &sol;&gt&semi;<br &sol;><br &sol;> &lt&semi;com&period;facebook&period;login&period;widget&period;LoginButton<br &sol;> android&colon;id&equals;"&commat;&plus;id&sol;login&lowbar;button"<br &sol;> android&colon;layout&lowbar;width&equals;"wrap&lowbar;content"<br &sol;> android&colon;layout&lowbar;height&equals;"wrap&lowbar;content"<br &sol;> android&colon;layout&lowbar;gravity&equals;"center&lowbar;horizontal"<br &sol;> android&colon;layout&lowbar;marginTop&equals;"30dp"<br &sol;> android&colon;layout&lowbar;marginBottom&equals;"30dp"<br &sol;> app&colon;layout&lowbar;constraintEnd&lowbar;toEndOf&equals;"&commat;&plus;id&sol;userEmail"<br &sol;> app&colon;layout&lowbar;constraintStart&lowbar;toStartOf&equals;"&commat;&plus;id&sol;userEmail"<br &sol;> app&colon;layout&lowbar;constraintTop&lowbar;toBottomOf&equals;"&commat;&plus;id&sol;userEmail" &sol;&gt&semi;<br &sol;><br &sol;>&lt&semi;&sol;androidx&period;constraintlayout&period;widget&period;ConstraintLayout&gt&semi;<&sol;pre> &NewLine;<h4><strong><span style&equals;"color&colon; &num;000080&semi;">Creating the MainActivity File<&sol;span><&sol;strong><&sol;h4> &NewLine;<p>The <strong><span style&equals;"color&colon; &num;008000&semi;">MainActivity&period;kt<&sol;span><&sol;strong> file contains the below code&colon;<&sol;p>&NewLine;<&excl;-- WP QUADS Content Ad Plugin v&period; 2&period;0&period;98&period;1 -->&NewLine;<div class&equals;"quads-location quads-ad2" id&equals;"quads-ad2" style&equals;"float&colon;none&semi;margin&colon;0px&semi;">&NewLine;&NewLine;<&sol;div>&NewLine; &NewLine;<p><strong><span style&equals;"color&colon; &num;0000ff&semi;">MainActivity&period;kt<&sol;span><&sol;strong><&sol;p> &NewLine;<pre>package com&period;c1ctech&period;floginexp<br &sol;><br &sol;>import androidx&period;appcompat&period;app&period;AppCompatActivity<br &sol;>import android&period;os&period;Bundle<br &sol;>import com&period;facebook&period;login&period;LoginResult<br &sol;>import com&period;c1ctech&period;floginexp&period;databinding&period;ActivityMainBinding<br &sol;>import java&period;util&period;&ast;<br &sol;>import android&period;content&period;Intent<br &sol;>import android&period;util&period;Log<br &sol;>import android&period;widget&period;Toast<br &sol;>import com&period;facebook&period;&ast;<br &sol;>import org&period;json&period;JSONObject<br &sol;>import org&period;json&period;JSONException<br &sol;>import com&period;facebook&period;GraphResponse<br &sol;>import com&period;facebook&period;GraphRequest<br &sol;><br &sol;>class MainActivity &colon; AppCompatActivity&lpar;&rpar; &lbrace;<br &sol;><br &sol;> lateinit var accessTokenTracker&colon; AccessTokenTracker<br &sol;> lateinit var callbackManager&colon; CallbackManager<br &sol;><br &sol;> lateinit var activityMainBinding&colon; ActivityMainBinding<br &sol;><br &sol;> override fun onCreate&lpar;savedInstanceState&colon; Bundle&quest;&rpar; &lbrace;<br &sol;> super&period;onCreate&lpar;savedInstanceState&rpar;<br &sol;><br &sol;> activityMainBinding &equals; ActivityMainBinding&period;inflate&lpar;layoutInflater&rpar;<br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol; initializes the Facebook SDK<&sol;span><&sol;strong><br &sol;> FacebookSdk&period;sdkInitialize&lpar;applicationContext&rpar;<br &sol;><br &sol;> setContentView&lpar;activityMainBinding&period;root&rpar;<br &sol;><br &sol;> <strong><span style&equals;"color&colon; &num;008000&semi;">&sol;&sol; create an instance of callbackManager<&sol;span><&sol;strong><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol; It manages the callbacks into the FacebookSdk from onActivityResult&lpar;&rpar;'s method&period;<&sol;span><&sol;strong><br &sol;> callbackManager &equals; CallbackManager&period;Factory&period;create&lpar;&rpar;<br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol; set the permissions to use when the user logs in&period;<&sol;span><&sol;strong><br &sol;> activityMainBinding&period;loginButton&period;setPermissions&lpar;listOf&lpar;"email"&comma; "public&lowbar;profile"&rpar;&rpar;<br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol; Registers a login callback to the given callback manager&period;<&sol;span><&sol;strong><br &sol;> activityMainBinding&period;loginButton&period;registerCallback&lpar;<br &sol;> callbackManager&comma;<br &sol;> object &colon; FacebookCallback&lt&semi;LoginResult&quest;&gt&semi; &lbrace;<br &sol;><br &sol;><span style&equals;"color&colon; &num;008000&semi;"><strong> &sol;&sol; called when the dialog completes without error&period;<&sol;strong><&sol;span><br &sol;> override fun onSuccess&lpar;result&colon; LoginResult&quest;&rpar; &lbrace;<br &sol;> Log&period;e&lpar;"message&colon; "&comma; "success"&rpar;<br &sol;> &rcub;<br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol; called when the dialog is canceled&period;<&sol;span><&sol;strong><br &sol;> override fun onCancel&lpar;&rpar; &lbrace;<br &sol;> Log&period;e&lpar;"message&colon; "&comma; "onCancel"&rpar;<br &sol;> &rcub;<br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol; called when the dialog finishes with an error&period;<&sol;span><&sol;strong><br &sol;> override fun onError&lpar;exception&colon; FacebookException&rpar; &lbrace;<br &sol;> Log&period;e&lpar;"message&colon; "&comma; exception&period;localizedMessage&rpar;<br &sol;> &rcub;<br &sol;> &rcub;&rpar;<br &sol;><br &sol;> accessTokenTracker &equals; object &colon; AccessTokenTracker&lpar;&rpar; &lbrace;<br &sol;><br &sol;><span style&equals;"color&colon; &num;008000&semi;"><strong> &sol;&sol; The method that will be called with the access token changes&period;<&sol;strong><&sol;span><br &sol;> override fun onCurrentAccessTokenChanged&lpar;<br &sol;> oldAccessToken&colon; AccessToken&quest;&comma;<br &sol;> currentAccessToken&colon; AccessToken&quest;<br &sol;> &rpar; &lbrace;<br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol; condition is true when user logs out<&sol;span><&sol;strong><br &sol;> if &lpar;currentAccessToken &equals;&equals; null&rpar; &lbrace;<br &sol;> activityMainBinding&period;userName&period;text &equals; ""<br &sol;> activityMainBinding&period;userEmail&period;text &equals; ""<br &sol;> Toast&period;makeText&lpar;this&commat;MainActivity&comma; "LogOut"&comma; Toast&period;LENGTH&lowbar;SHORT&rpar;&period;show&lpar;&rpar;<br &sol;> &rcub; else &lbrace;<br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol;get user data from Json object and display it in textviews&period;<&sol;span><&sol;strong><br &sol;> loadUserProfile&lpar;currentAccessToken&rpar;<br &sol;> &rcub;<br &sol;> &rcub;<br &sol;> &rcub;<br &sol;> &rcub;<br &sol;><br &sol;> override fun onActivityResult&lpar;requestCode&colon; Int&comma; resultCode&colon; Int&comma; data&colon; Intent&quest;&rpar; &lbrace;<br &sol;> callbackManager&period;onActivityResult&lpar;requestCode&comma; resultCode&comma; data&rpar;<br &sol;> super&period;onActivityResult&lpar;requestCode&comma; resultCode&comma; data&rpar;<br &sol;> &rcub;<br &sol;><br &sol;> override fun onDestroy&lpar;&rpar; &lbrace;<br &sol;> super&period;onDestroy&lpar;&rpar;<br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol; stops tracking the current access token<&sol;span><&sol;strong><br &sol;> accessTokenTracker&period;stopTracking&lpar;&rpar;<br &sol;><br &sol;> &rcub;<br &sol;><br &sol;> private fun loadUserProfile&lpar;currentAccessToken&colon; AccessToken&rpar; &lbrace;<br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol; creates a new Request configured to retrieve a user's own profile&period;<&sol;span><&sol;strong><br &sol;> val request &equals; GraphRequest&period;newMeRequest&lpar;<br &sol;> currentAccessToken&comma; object &colon; GraphRequest&period;GraphJSONObjectCallback &lbrace;<br &sol;> override fun onCompleted&lpar;&grave;object&grave;&colon; JSONObject&quest;&comma; response&colon; GraphResponse&quest;&rpar; &lbrace;<br &sol;> Log&period;d&lpar;"TAG"&comma; &grave;object&grave;&period;toString&lpar;&rpar;&rpar;<br &sol;> try &lbrace;<br &sol;> val first&lowbar;name &equals; &grave;object&grave;&excl;&excl;&period;getString&lpar;"first&lowbar;name"&rpar;<br &sol;> val last&lowbar;name &equals; &grave;object&grave;&excl;&excl;&period;getString&lpar;"last&lowbar;name"&rpar;<br &sol;> val email &equals; &grave;object&grave;&excl;&excl;&period;getString&lpar;"email"&rpar;<br &sol;><br &sol;> activityMainBinding&period;userName&period;setText&lpar;"&dollar;first&lowbar;name &dollar;last&lowbar;name"&rpar;<br &sol;> activityMainBinding&period;userEmail&period;setText&lpar;email&rpar;<br &sol;><br &sol;> &rcub; catch &lpar;e&colon; JSONException&rpar; &lbrace;<br &sol;> e&period;printStackTrace&lpar;&rpar;<br &sol;> &rcub;<br &sol;> &rcub;<br &sol;> &rcub;&rpar;<br &sol;><br &sol;> val parameters &equals; Bundle&lpar;&rpar;<br &sol;> parameters&period;putString&lpar;"fields"&comma; "first&lowbar;name&comma;last&lowbar;name&comma;email&comma;id"&rpar;<br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol; set parameters for this request&period;<&sol;span><&sol;strong><br &sol;> request&period;parameters &equals; parameters<br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol; Executes the request asynchronously&period;<&sol;span><&sol;strong><br &sol;> request&period;executeAsync&lpar;&rpar;<br &sol;> &rcub;<br &sol;>&rcub;<br &sol;><br &sol;><&sol;pre> &NewLine;<p>In the above code&comma;<&sol;p> &NewLine;<ul> &NewLine;<li><span style&equals;"color&colon; &num;008000&semi;"><strong>sdkInitialize&lpar;&rpar;<&sol;strong><&sol;span> method initializes the Facebook SDK&period;<&sol;li> &NewLine;<li>The instance of <strong><span style&equals;"color&colon; &num;008000&semi;">callbackManager<&sol;span><&sol;strong> manages the callbacks into the FacebookSdk from the Activity&&num;8217&semi;s <span style&equals;"color&colon; &num;008000&semi;"><strong>onActivityResult&lpar;&rpar;<&sol;strong> <&sol;span>method&period;<&sol;li> &NewLine;<li>The <strong><span style&equals;"color&colon; &num;008000&semi;">setPermissions&lpar;&rpar;<&sol;span> <&sol;strong>method sets the permissions to use when the user logs in&period;<&sol;li> &NewLine;<li>The <strong><span style&equals;"color&colon; &num;008000&semi;">registerCallback&lpar;&rpar;<&sol;span><&sol;strong> method registers a login callback to the given callback manager&period;<&sol;li> &NewLine;<li>In onActivityResult&lpar;&rpar; method&comma; the <strong><span style&equals;"color&colon; &num;008000&semi;">callbackManager&period;onActivityResult&lpar;&rpar;<&sol;span><&sol;strong> &lpar;returns <span style&equals;"color&colon; &num;008000&semi;"><strong>true<&sol;strong><&sol;span> If the result could be handled&rpar; passes the login results to the <strong><span style&equals;"color&colon; &num;008000&semi;">registerCallback<&sol;span><&sol;strong> method via callbackManager&period;<&sol;li> &NewLine;<li>If login <strong><span style&equals;"color&colon; &num;008000&semi;">succeeds<&sol;span><&sol;strong>&comma; the <strong><span style&equals;"color&colon; &num;008000&semi;">LoginResult<&sol;span><&sol;strong> parameter has the new AccessToken&comma; and the most recently granted or declined permissions&period;<&sol;li> &NewLine;<li> &NewLine;<p><strong><span style&equals;"color&colon; &num;008000&semi;">onCurrentAccessTokenChanged&lpar;&rpar;<&sol;span><&sol;strong> method will be called with the access token changes&period;<&sol;p> &NewLine;<&sol;li> &NewLine;<li>The <strong><span style&equals;"color&colon; &num;008000&semi;">Facebook Graph API<&sol;span> <&sol;strong>is used to retrieve user info&period; It works by passing a Bundle of parameters as keys to the GraphRequest&period; The GraphRequest&comma; on execution&comma; should return the relevant info values based on the keys specified if they meet the permissions&period; The result is returned in the form of a <strong><span style&equals;"color&colon; &num;008000&semi;">JSON<&sol;span><&sol;strong>&period;<&sol;li> &NewLine;<&sol;ul> &NewLine;<p>When you run the app you will see a login button on the screen&colon;<&sol;p> &NewLine;<p><img class&equals;"alignnone wp-image-3041" src&equals;"https&colon;&sol;&sol;c1ctech&period;com&sol;wp-content&sol;uploads&sol;2022&sol;02&sol;s1-473x1024&period;png" alt&equals;"" width&equals;"268" height&equals;"580" &sol;><&sol;p> &NewLine;<p>When the user successfully logged in you will see the Log out button with user info and on-click of Log out button it will show dialog as shown below&colon;<&sol;p> &NewLine;<p><img class&equals;"alignnone wp-image-3042" src&equals;"https&colon;&sol;&sol;c1ctech&period;com&sol;wp-content&sol;uploads&sol;2022&sol;02&sol;s3-473x1024&period;png" alt&equals;"" width&equals;"281" height&equals;"608" &sol;>           <img class&equals;"alignnone wp-image-3043" src&equals;"https&colon;&sol;&sol;c1ctech&period;com&sol;wp-content&sol;uploads&sol;2022&sol;02&sol;s2-473x1024&period;png" alt&equals;"" width&equals;"284" height&equals;"615" &sol;>&NewLine;

Exit mobile version