Android Facebook 4.0 SDK Как получить электронную почту, дату рождения пользователя

Код действия:

 loginButton = (LoginButton) findViewById(R.id.login_button);
    loginButton.setReadPermissions(Arrays.asList("public_profile", "email", "user_birthday", "user_friends"));
    callbackManager = CallbackManager.Factory.create();
    loginButton.registerCallback(callbackManager, new FacebookCallback < LoginResult > () {
     @Override
     public void onSuccess(LoginResult loginResult) {
      AccessToken accessToken = loginResult.getAccessToken();
      Profile profile = Profile.getCurrentProfile();
      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 gender = object.getString("gender");
         String first_name = object.getString("first_name");
         String last_name = object.getString("last_name");
         String email = object.getString("email");
         String birthday = object.getString("birthday");
         tv_profile_name.setText(name);
         firstname.setText(first_name);
         lastname.setText(last_name);
         genderr.setText(gender);
         dob.setText(birthday);
         emailid.setText(email);
         String imageurl = "https://graph.facebook.com/" + id + "/picture?type=large";
         Picasso.with(MainActivity.this).load(imageurl).into(iv_profile_pic);
        } catch (JSONException e) {
         e.printStackTrace();
        }
       }
      });
      Bundle parameters = new Bundle();
      parameters.putString("fields", "id,name,email,gender, birthday,first_name,last_name");
      request.setParameters(parameters);
      request.executeAsync();
      accessTokenTracker = new AccessTokenTracker() {
       @Override
       protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken currentAccessToken) {
        if (currentAccessToken == null) {
         tv_profile_name.setText("");
         firstname.setText("");
         lastname.setText("");
         genderr.setText("");
         dob.setText("");
         emailid.setText("");
         iv_profile_pic.setVisibility(View.INVISIBLE);
        }
       }
      };
     }
     @Override
     public void onCancel() {}
     @Override
     public void onError(FacebookException error) {}
    });
    }

person Rohan Chavan    schedule 07.11.2016    source источник


Ответы (1)


В вашем методе onComplete используйте GraphResponse вместо параметра JSONObject. Вот мой код:

@Override
                    public void onCompleted(JSONObject object, GraphResponse response) {
                        JSONObject jsonObject = response.getJSONObject();
                        if (jsonObject != null) {
                            try {
                                email1 = jsonObject.getString("email");
                                gender1 = jsonObject.getString("gender");
                                birthday1 = jsonObject.getString("birthday");
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
                        }
                    }

Попробуйте, и дайте мне знать.

person Abhi    schedule 07.11.2016
comment
он показывает только пол, но не электронную почту и день рождения - person Rohan Chavan; 07.11.2016
comment
{AccessToken token:ACCESS_TOKEN_REMOVED разрешения:[public_profile, contact_email, user_friends, email]} - person Rohan Chavan; 07.11.2016
comment
В onActivityResult: - person Abhi; 07.11.2016
comment
использовать, Профиль профиля = Profile.getCurrentProfile(); - person Abhi; 07.11.2016
comment
Строковое имя = profile.getName(); Вы пробовали это - person Abhi; 07.11.2016
comment
но с помощью объекта профиля я не могу получить электронную почту и день рождения. - person Rohan Chavan; 07.11.2016