1

I think the return value from facebook is ambiguous.:

    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {

            GraphRequest request = GraphRequest.newMeRequest(
                    loginResult.getAccessToken(),
                    new GraphRequest.GraphJSONObjectCallback() {
                        @Override
                        public void onCompleted(
                                JSONObject object,
                                GraphResponse response) {
                            // Application code

                            try {
                                JSONObject jsonObject = new JSONObject(response.toString());



                            } catch (JSONException e) {
                                e.printStackTrace();
                            }catch (NullPointerException e){

                            }



                        }
                    });
            Bundle parameters = new Bundle();
            parameters.putString("fields", "id,name,email,gender, birthday");
            request.setParameters(parameters);
            request.executeAsync();

        }



        @Override
        public void onCancel() {
            Log.e("facebook","canceled");
        }

        @Override
        public void onError(FacebookException e) {

            Log.e("facebook error",e.getMessage().toString());
        }
    });

result :

{Response:  responseCode: 200, graphObject: {"id":"931177080295510","birthday":"06\/24\/1991","gender":"male","email":"smemamian@yahoo.com","name":"Masoud Emamian"}, error: null}

how to parse it ?

S.M_Emamian
  • 17,005
  • 37
  • 135
  • 254

2 Answers2

1

What about using google gson? https://github.com/google/gson

I use it for every Android project where I need to serialize/deserialize json. Give it a try, here are some basic examples for you which should satisfy your needs:

Deserialization:

int one = gson.fromJson("1", int.class);
Integer one = gson.fromJson("1", Integer.class);
Long one = gson.fromJson("1", Long.class);
Boolean false = gson.fromJson("false", Boolean.class);
String str = gson.fromJson("\"abc\"", String.class);
String anotherStr = gson.fromJson("[\"abc\"]", String.class);

If not, check the documentation here: https://sites.google.com/site/gson/gson-user-guide

finki
  • 2,063
  • 1
  • 20
  • 23
  • Link-only answers are highly discouraged here because the links may become dead in the future. I suggest you edit your answer with quotes from the sources you cite – Anirudh Sharma Jul 30 '15 at 07:05
1

do it with this code. it's works for me.

loginButton = (LoginButton) findViewById(R.id.login_button);

List < String > permissionNeeds = Arrays.asList("user_photos", "email",
 "user_birthday", "public_profile", "AccessToken");
loginButton.registerCallback(callbackManager,
new FacebookCallback < LoginResult > () {@Override
 public void onSuccess(LoginResult loginResult) {

  System.out.println("onSuccess");

  String accessToken = loginResult.getAccessToken()
   .getToken();
  Log.i("accessToken", accessToken);

  GraphRequest request = GraphRequest.newMeRequest(
  loginResult.getAccessToken(),
  new GraphRequest.GraphJSONObjectCallback() {@Override
   public void onCompleted(JSONObject object,
   GraphResponse response) {
    Log.i("LoginActivity", response.toString());
    try {
     id = object.getString("id");
     try {
      URL profile_pic = new URL(
       "http://graph.facebook.com/" + id + "/picture?type=large");
      Log.i("profile_pic",
      profile_pic + "");

     } catch (MalformedURLException e) {
      e.printStackTrace();
     }
     name = object.getString("name");
     email = object.getString("email");
     gender = object.getString("gender");
     birthday = object.getString("birthday");
    } 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() {
  System.out.println("onCancel");
 }

 @Override
 public void onError(FacebookException exception) {
  System.out.println("onError");
  Log.v("LoginActivity", exception.getCause().toString());
 }
});
Harvi Sirja
  • 2,472
  • 2
  • 18
  • 19