Question

hi I am using the latest Facebook SDK for native login and i have successfully login via native but I am not able to retrieve the user details like name address etc. i have used the below code. and this line in my eclipse is showing Deprecated. Request.executeMeRequestAsync(session, new Request.GraphUserCallback())

loginbtn = (Button)findViewById(R.id.loginbutton);

        loginbtn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(MainActivity.this,FacebookLogin.class);
                startActivity(intent);

            }
        }); 
    public class FacebookLogin extends Activity{
    //private TextView textInstructionsOrLink;

    //private Session.StatusCallback statusCallback = new SessionStatusCallback();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.facebooklogin);

         Session.openActiveSession(this, true, new Session.StatusCallback() {

             // callback when session changes state
             @SuppressWarnings("deprecation")
        @Override
             public void call(final Session session, SessionState state, Exception exception) {
               if (session.isOpened()) {


                 // make request to the /me API
                 Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {

                   // callback after Graph API response with user object
                   @Override
                   public void onCompleted(GraphUser user, Response response) {
                     if (user != null) {
                      Log.i("USERName", ""+user.getName());
                      Log.i("Birthday", ""+user.getBirthday());
                      Log.i("LastName", ""+user.getLastName());
                      Log.i("FirstName", ""+user.getFirstName());


                        Intent i =new Intent(getApplicationContext(), MainActivity.class);
                        i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
                        startActivity(i);

                        finish();

                     }
                   }
                 });



               }
             }
           });


    }





    @SuppressWarnings("deprecation")
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        Log.i("onActivityResult", "called");

        super.onActivityResult(requestCode, resultCode, data);
        Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);


        Session session = Session.getActiveSession();
        if (session.isOpened()) {




           // make request to the /me API
            Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {

              // callback after Graph API response with user object
              @Override
              public void onCompleted(GraphUser user, Response response) {
                if (user != null) {
                     Log.i("USERName", ""+user.getName());
                      Log.i("Birthday", ""+user.getBirthday());
                     Log.i("LastName", ""+user.getLastName());
                     Log.i("FirstName", ""+user.getFirstName());

                        Intent i =new Intent(getApplicationContext(), MainActivity.class);
                        i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
                        startActivity(i);
                        finish();
                        Log.i("USERName", ""+user.getName());
                }
              }
            });


          }else {
            finish();
        }


    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        Log.i("onSaveInstanceState", "called");
        super.onSaveInstanceState(outState);
        Session session = Session.getActiveSession();
        Session.saveSession(session, outState);
    }


}
Was it helpful?

Solution

This is how I have done it. Check out this source code: https://github.com/madhur/MapMyLocation/blob/develop/src/in/co/madhur/mapmylocation/activity/FBLogin.java

//Create the Request
Request meRequest=Request.newMeRequest(session, new GraphUserCallback()
                                {

                                        @Override
                                        public void onCompleted(GraphUser user, Response response)
                                        {
                                                if(response.getError()==null)
                                                {

                                                        appPreferences.setFBUserName(user.getName());
                                                }

                                        }
                                });
 //Execute the request
 meRequest.executeAsync();
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top