2015-09-03 4 views
0

Я пытаюсь извлечь информацию от пользователя, который входит в мое приложение для Android с помощью Facebook. Я получаю способ не решить метод, когда getInnerJSONResponse().Не удается решить метод getInnerJSONObject()

@Override 
        public void onCompleted(JSONObject object, GraphResponse response) { 
         ParseUser user = new ParseUser(); 

         JSONObject jsonResponseObject = user.getInnerJSONObject(); 
         String email = jsonResponseObject.getProperty("email"); 
//      String firstName = jsonResponseObject.getFirstName(); 
//      String lastName = jsonResponseObject.getLastName(); 
        } 
       }); 
       Bundle param = new Bundle(); 
       param.putString("fields", "cover, birthday, email, first_name, last_name, "); 
       request.setParameters(param); 
       request.executeAsync(); 
+0

Я также получаю метод не может решить для GetProperty, которые я думаю, связано с предыдущей ошибки. –

ответ

0

Попробуйте использовать:

String email = jsonResponseObject.getString("email"); 
String firstName = jsonResponseObject.getString("first_name"); 
String lastName = jsonResponseObject.getString("last_name"); 

т.д.

См documentation

+0

Это решило ошибку электронной почты, но мне все еще нужно исправить получение ответа json other. У меня не будет электронной почты для извлечения. –

+0

Я пробовал метод выше, но приложение выходит из строя, потому что JSONObject имеет значение null. –

+0

Запуск в режиме отладки и просмотр объектов-ответчиков «Объект JSONObject» и ответ «GraphResponse» –

0

Используйте этот код. Check this Answer.

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

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

 
\t \t System.out.println("onSuccess"); 
 

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

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

 
\t \t \t \t \t } catch (MalformedURLException e) { 
 
\t \t \t \t \t \t e.printStackTrace(); 
 
\t \t \t \t \t } 
 
\t \t \t \t \t name = object.getString("name"); 
 
\t \t \t \t \t email = object.getString("email"); 
 
\t \t \t \t \t gender = object.getString("gender"); 
 
\t \t \t \t \t birthday = object.getString("birthday"); 
 
\t \t \t \t } catch (JSONException e) { 
 
\t \t \t \t \t e.printStackTrace(); 
 
\t \t \t \t } 
 
\t \t \t } 
 
\t \t }); 
 
\t \t Bundle parameters = new Bundle(); 
 
\t \t parameters.putString("fields", 
 
\t \t \t "id,name,email,gender, birthday"); 
 
\t \t request.setParameters(parameters); 
 
\t \t request.executeAsync(); 
 
\t } 
 

 
\t @Override 
 
\t public void onCancel() { 
 
\t \t System.out.println("onCancel"); 
 
\t } 
 

 
\t @Override 
 
\t public void onError(FacebookException exception) { 
 
\t \t System.out.println("onError"); 
 
\t \t Log.v("LoginActivity", exception.getCause().toString()); 
 
\t } 
 
});