I am using facebook sdk 4.2 for my android application. But I could not get my email address, and it does not show the value for email. However, I can get other value, such as name, link, identifier, gender. There are several topics about this from stackoverflow, but they use the old version of sdk, the class is different. Please help, here is my code.
FacebookSdk.sdkInitialize(this.getApplicationContext());
callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(callbackManager,
new FacebookCallback < LoginResult > () {
@Override
public void onSuccess(LoginResult loginResult) {
Toast.makeText(MainActivity.this, "SUCCESS", Toast.LENGTH_SHORT).show();
GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(
JSONObject object,
GraphResponse response) {
try {
String id = object.getString("id");
String name = object.getString("name");
String email = object.getString("email");
String gender = object.getString("gender");
Toast.makeText(MainActivity.this, "HI," + name + "Gender: " + gender, Toast.LENGTH_SHORT).show();
} catch (JSONException e) {
Toast.makeText(MainActivity.this, "Error", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email,gender");
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException exception) {
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
My log file
06-05 13: 47: 56.207: W/System.err(9965): org.json.JSONException: 06-05 13: 47: 56.246: W/System.err(9965): at org.json.JSONObject.get(JSONObject.java:355) 06-05 13: 47: 56.246: W/System.err(9965): at org.json.JSONObject.getString(JSONObject.java:515) 06-05 13: 47: 56.254: W/System.err(9965): at com.android.jobstreet.MainActivity $2 $1.onCompleted(MainActivity.java:242) 06-05 13: 47: 56.254: W/System.err(9965): at com.facebook.GraphRequest $1.onCompleted(GraphRequest.java:295) 06-05 13: 47: 56.254: W/System.err(9965): at com.facebook.GraphRequest $5.run(GraphRequest.java:1243) 06-05 13: 47: 56.254: W/System.err(9965): at android.os.Handler.handleCallback(Handler.java:733) 06-05 13: 47: 56.254: W/System.err(9965): at android.os.Handler.dispatchMessage(Handler.java:95) 06-05 13: 47: 56.254: W/System.err(9965): at android.os.Looper.loop(Looper.java:136) 06-05 13: 47: 56.254: W/System.err(9965): at android.app.ActivityThread.main(ActivityThread.java:5146) 06-05 13: 47: 56.254: W/System.err(9965): at java.lang.reflect.Method.invokeNative( ) 06-05 13: 47: 56.254: W/System.err(9965): at java.lang.reflect.Method.invoke(Method.java:515) 06-05 13: 47: 56.254: W/System.err(9965): at com.android.internal.os.ZygoteInit $MethodAndArgsCaller.run(ZygoteInit.java:732) 06-05 13: 47: 56.254: W/System.err(9965): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566) 06-05 13: 47: 56.254: W/System.err(9965): at dalvik.system.NativeStart.main( )