How to add Facebook Login in Android
suggest changeAdd below dependencies to your build.gradle
// Facebook login compile 'com.facebook.android:facebook-android-sdk:4.21.1'
Add below helper class to your utility package:
/** * 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; } }
Add below code in Your Activity:
FacebookSignInHelper facebookSignInHelper = FacebookSignInHelper.newInstance(LoginActivity.this, fireBaseAuthHelper); facebookSignInHelper.loginUser();
Add below code to your OnActivityResult
:
facebookSignInHelper.getCallbackManager().onActivityResult(requestCode, resultCode, data);
Found a mistake? Have a question or improvement idea?
Let me know.
Table Of Contents