Here is my onCreate method:
@Override protected void onCreate(Bundle bundle) { super.onCreate(bundle); setContentView(R.layout.activity_social_login); init(); hideActiveSocialNetworks(); FacebookSdk.sdkInitialize(getApplicationContext()); CallbackManager callbackManager = CallbackManager.Factory.create(); LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { // not called Log.d("fb_login_sdk", "callback success"); } @Override public void onCancel() { // not called Log.d("fb_login_sdk", "callback cancel"); } @Override public void onError(FacebookException e) { // not called Log.d("fb_login_sdk", "callback onError"); } }); final Activity activity = this; findViewById(R.id.fb_login_sdk).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Log.d("fb_login_sdk", "click"); List<String> perm = new ArrayList<String>(); perm.add("user_friends"); LoginManager.getInstance().logInWithReadPermissions(activity, perm); } }); }
After login the onSuccess(), onCancel(), onError() methods are not fired.
Documentation: https://developers.facebook.com/docs/facebook-login/android/v2.3
Missing this on my activity:
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); callbackManager.onActivityResult(requestCode, resultCode, data); }
Here is checklist to check whether your Facebook Sdk setup is correct:-
Check your manifest if you have setup Facebook initialization properly.
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id" /> <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>
Create Facebook CallBackManager variable
var fbCallManager = CallbackManager.Factory.create()
On Click of Login with Facebook button. Put your required permission in Array.
LoginManager.getInstance() .logInWithReadPermissions(this, Arrays.asList("public_profile", "email", "user_friends")) LoginManager.getInstance().registerCallback(fbCallManager, object : FacebookCallback<LoginResult> { override fun onSuccess(result: LoginResult?) { //login success } override fun onCancel() { //login cancelled by user } override fun onError(error: FacebookException?) { //login error handle exception } })
}
Add callback result in onActivityResult method
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) fbCallManager.onActivityResult(requestCode, resultCode, data) }
Provide the Development and Release Key Hashes for Your
keytool -exportcert -alias androiddebugkey -keystore "C:\Users\USERNAME.android\debug.keystore" | "PATH_TO_OPENSSL_LIBRARY\bin\openssl" sha1 -binary | "PATH_TO_OPENSSL_LIBRARY\bin\openssl" base64
Download openssl from here
References : Facebook
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With