As 'Md Abdul Gafur' mentioned make sure your facebook account is properly setup.
Add the dependency to your build.gradle:
compile 'com.facebook.android:facebook-android-sdk:4.2.0'
Add the facebook activity to your AndroidManifest.xml:
<activity
android:name="com.facebook.FacebookActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
Then in your actvitiy override onActivityResult:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mCallbackManager.onActivityResult(requestCode, resultCode, data);
}
Login from your activity with:
FacebookSdk.sdkInitialize(mContext.getApplicationContext());
FacebookSdk.setApplicationId(mApiKey);
mCallbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject user, GraphResponse response) {
if (response.getError() != null) {
// handle error
} else {
if (user != null) {
// Get the data you need
String email = user.optString("email", "");
} else {
//handle null user
}
}
}
});
request.executeAsync();
}
@Override
public void onCancel() {
//handle cancel
}
@Override
public void onError(FacebookException exception) {
// handle exception
}
});
LoginManager.getInstance().logInWithReadPermissions(mContext, Collections.singletonList("public_profile"));