2015-04-07 7 views
0

Facebook изменил API до 4,0 и как я могу получить адрес электронной почты пользователя , потому что новый класс называется профилем, который не может его получить. Это может вызвать обратный вызов из графического API?Facebook android SDK4.0 получить адрес электронной почты

private void GraphAPIprofile() { 
     GraphRequest request = GraphRequest.newMeRequest(
       AccessToken.getCurrentAccessToken(), 
       new GraphRequest.GraphJSONObjectCallback() { 
        @Override 
        public void onCompleted(
          JSONObject object, 
          GraphResponse response) { 
         // Application code 
         Log.i("Graph API", response.toString()); 
         Log.i("User Mail", object.optString("email")); 

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

Я думаю, что там есть что-то неправильно со мной .. пожалуйста, помогите, спасибо

ответ

0

Попробуйте этот код: -

if (Session.getActiveSession() == null 
     || Session.getActiveSession().isClosed()) { 
    Session.openActiveSession(this, true, new StatusCallback() { 

     @Override 
     public void call(Session session, SessionState state, 
       Exception exception) { 
      System.out.println("State= " + state); 

      if (session.isOpened()) { 
       System.out.println("Token=" + session.getAccessToken()); 
       Request.executeMeRequestAsync(session, 
         new GraphUserCallback() { 
          @Override 
          public void onCompleted(GraphUser user, 
            Response response) { 
           if (user != null) { 
            System.out.println("User=" + user); 

           } 
           if (response != null) { 
            System.out.println("Response=" 
              + response); 
            Toast.makeText(FBConnect.this, 
              response.toString(), 
              Toast.LENGTH_LONG).show(); 
           } 
          } 
         }); 
      } 
      if (exception != null) { 
       System.out.println("Some thing bad happened!"); 
       exception.printStackTrace(); 
      } 
     } 
    }); 
} 

Написать этот код в onResume вашей деятельности или там, где вы хотите для доступа к данным пользователя.

+0

Да, спасибо за ответ, я сделал это вчера, но я думаю, что это было для старой версии API. Они удалили сеанс. https://developers.facebook.com/docs/android/upgrading-4.x –

+0

Не работает он для меня. Пользовательский объект содержит всю необходимую информацию –