Get profile data from Facebook SDK on Android always return Null. Why? -


i learned facebook sdk on android. search on stackoverflow , facebook developer guide login, still stuck when profile data facebook sdk. try implement solution : unable profile , get email, still stuck.

there code :

    public class homeloginactivity extends activity {    loginbutton btnfacebook;     callbackmanager callbackmanager = callbackmanager.factory.create();     profiletracker proftrack;     accesstokentracker accesstokentracker;     textview welcometext;     facebookcallback<loginresult> mfacebookcallback;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         facebooksdk.sdkinitialize(this.getapplicationcontext());         setcontentview(r.layout.activity_home_login);         welcometext = (textview) findviewbyid(r.id.welcome_id);         accesstokentracker = new accesstokentracker() {             @override             protected void oncurrentaccesstokenchanged(                     accesstoken oldaccesstoken,                     accesstoken currentaccesstoken) {                 // app code                 log.d("current token", "" + currentaccesstoken);                  //}             }         };         proftrack = new profiletracker() {             @override             protected void oncurrentprofilechanged(                     profile oldprofile,                     profile currentprofile) {                 // app code                 log.d("current profile", "" + currentprofile);                 welcometext.settext(constructwelcomemessage(currentprofile));             }          };         mfacebookcallback = new facebookcallback<loginresult>() {             @override             public void onsuccess(loginresult loginresult) {                 accesstoken accesstoken = loginresult.getaccesstoken();                 profile profile = profile.getcurrentprofile();                 welcometext.settext(constructwelcomemessage(profile));                  graphrequest request = graphrequest.newmerequest(                         loginresult.getaccesstoken(),                         new graphrequest.graphjsonobjectcallback() {                             @override                             public void oncompleted(                                     jsonobject object,                                     graphresponse response) {                                 // application code                                 try {                                     string id=object.getstring("id");                                     string name=object.getstring("name");                                     string email=object.getstring("email");                                     string gender=object.getstring("gender");                                     stringbirthday=object.getstring("birthday");                                      //do data here                                 } catch (jsonexception e) {                                     e.printstacktrace();                                  }                             }                         });                 bundle parameters = new bundle();                 parameters.putstring("fields", "id,name,email,gender,birthday");                 request.setparameters(parameters);                 request.executeasync();             }              @override             public void oncancel() {              }              @override             public void onerror(facebookexception e) {              }         };          accesstokentracker.starttracking();         proftrack.starttracking();          //button facebook         btnfacebook = (loginbutton) findviewbyid(r.id.btnfacebook);         btnfacebook.setreadpermissions("public_profile", "user_friends");         btnfacebook.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view v) {             loginmanager.getinstance().loginwithreadpermissions((activity) v.getcontext(),arrays.aslist("public_profile", "user_friends"));             }         });         btnfacebook.registercallback(callbackmanager, mfacebookcallback);      }     // ennd on create     private string constructwelcomemessage(profile profile) {         stringbuffer stringbuffer = new stringbuffer();         if (profile != null) {             stringbuffer.append("welcome " + profile.getname());         }         else {             stringbuffer.append("null profile");         }         return stringbuffer.tostring();     }       @override     protected void onactivityresult(int requestcode, int resultcode, intent data) {         super.onactivityresult(requestcode, resultcode, data);         callbackmanager.onactivityresult(requestcode, resultcode, data);      }     @override     public void onresume() {         super.onresume();         accesstoken.getcurrentaccesstoken();         log.d("resume current token", "" + accesstoken.getcurrentaccesstoken());         profile.fetchprofileforcurrentaccesstoken();     }      @override     public void onstop() {         super.onstop();         proftrack.stoptracking();         accesstokentracker.stoptracking();     }      @override     public void ondestroy() {         super.ondestroy();         accesstokentracker.stoptracking();         proftrack.stoptracking();     } } 

and there log cat :

 java.lang.nullpointerexception: attempt invoke virtual method 'java.lang.string org.json.jsonobject.getstring(java.lang.string)' on null object reference             @ com.twiscode.gimme.homeloginactivity$3$1.oncompleted(homeloginactivity.java:100)             @ com.facebook.graphrequest$1.oncompleted(graphrequest.java:298)             @ com.facebook.graphrequest$5.run(graphrequest.java:1246)             @ android.os.handler.handlecallback(handler.java:739)             @ android.os.handler.dispatchmessage(handler.java:95)             @ android.os.looper.loop(looper.java:135)             @ android.app.activitythread.main(activitythread.java:5221)             @ java.lang.reflect.method.invoke(native method)             @ java.lang.reflect.method.invoke(method.java:372)             @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:899)             @ com.android.internal.os.zygoteinit.main(zygoteinit.java:694) 

try sample code profile info

loginbutton.registercallback(callbackmanager,             new facebookcallback<loginresult>() {                 @override                 public void onsuccess(loginresult loginresult) {                     // app code                      // login ok access token                     graphrequest request = graphrequest.newmerequest(                             accesstoken.getcurrentaccesstoken(),                             new graphrequest.graphjsonobjectcallback() {                                 @override                                 public void oncompleted(jsonobject object,                                         graphresponse response) {                                      if (buildconfig.debug) {                                         facebooksdk.setisdebugenabled(true);                                         facebooksdk                                                 .addloggingbehavior(loggingbehavior.include_access_tokens);                                          system.out                                                 .println("accesstoken.getcurrentaccesstoken()"                                                         + accesstoken                                                                 .getcurrentaccesstoken()                                                                 .tostring());                                         profile.getcurrentprofile().getid();                                         profile.getcurrentprofile().getfirstname();                                         profile.getcurrentprofile().getlastname();                                         profile.getcurrentprofile().getprofilepictureuri(50, 50);                                         //string email=usermanager.asmap().get(“email”).tostring();                                     }                                 }                             });                     request.executeasync();                  /*  bundle parameters = new bundle();                     parameters                             .putstring("fields",                                     "id,firstname,lastname,name,email,gender,birthday,address");                     request.setparameters(parameters);                        intent loginintent = new intent(getactivity(),                             editprofile.class);                     startactivity(loginintent);                     system.out.println("xxxx " + getid());                  */                     makejsonobjreq();                 }                  @override                 public void oncancel() {                     // app code                 }                  @override                 public void onerror(facebookexception exception) {                     // app code                 }              });      return view;