2015-06-29 8 views
1

Я использую SDK для Facebook, чтобы разрешить пользователям входить в систему с помощью Facbook, но после успешного входа в систему я не могу получить информацию о профиле.Не удалось получить данные профиля facebook после входа в систему

Вот мой код:

fbLoginButton = (LoginButton) findViewById(R.id.login_button); 
    fbLoginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 
      Profile profile = Profile.getCurrentProfile(); 

      id = profile.getId(); 
      String user_fname = profile.getFirstName(); 
      String user_lname = profile.getLastName(); 
      user = user_fname.concat(" "); 
      user = user.concat(user_lname); 
      image = profile.getProfilePictureUri(10, 10).toString(); 

      try { 
       send(); 
      }catch (Exception ex) { 
       String error = ex.getMessage(); 
      } 
     } 

Это дает ошибку, что профиль OBJ является null

+0

проверить это http://stackoverflow.com/questions/30233042/how-to-login-facebook-using-sdk-4-1-0-in-android/ 30233276 # 30233276 – Singhak

+0

попробуйте http://stackoverflow.com/q/30802530/4990308 – Mano

ответ

2

Использование GraphRequest получить информацию профиля.

@Override 
public void onSuccess(LoginResult loginResult) { 

    AccessToken accessToken = loginResult.getAccessToken(); 
    GraphRequest request = GraphRequest.newMeRequest(accessToken, 
      new GraphRequest.GraphJSONObjectCallback() { 
       String email; 
       String firstName; 
       String lastName; 
       String gender; 

       String country; 
       String dob, name, picPath, id; 

       @Override 
       public void onCompleted(JSONObject object, 
         GraphResponse response) { 
        try { 

         email = object.getString("email"); 
         name = object.getString("name"); 
         firstName = object.getString("first_name"); 
         lastName = object.getString("last_name"); 
         gender = object.getString("gender"); 
         country = object.getString("locale"); 
         id = object.getString("id"); 
         picPath = "http://graph.facebook.com/" + id + "/picture?type=large"; 

         dob = object.getString("birthday"); 

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

       } 
      }); 
    Bundle parameters = new Bundle(); 
    parameters 
      .putString("fields", 
        "name,email,address,first_name,last_name,gender,location,birthday,locale"); 

    request.setParameters(parameters); 
    request.executeAsync(); 

} 
0

Проверьте приведенный ниже код и попытаться осуществить это для извлечения информации из Facebook при входе в систему. Кроме того, не забудьте добавить разрешения для информации, которая вам требуется.

private Session.StatusCallback statusCallback = new Session.StatusCallback() { 
     @Override 
     public void call(final Session session, SessionState state, 
         Exception exception) { 
      if (state.isOpened()) { 
       Request mRequest = Request.newMeRequest(session, new Request.GraphUserCallback() { 
        @Override 
        public void onCompleted(GraphUser graphUser, Response response) { 
         if (response.getError() == null) { 
          String id= graphUser.getId())); 
          String name= graphUser.getName())); 
          Strign profilePic= "http://graph.facebook.com/" + graphUser.getId() + "/picture")); 
         } else { 

         } 
        } 
       }); 
       RequestAsyncTask asyncTask=mRequest.executeAsync(); 
      } else if (state.isClosed()) { 
      } 
     } 
    }; 

здесь

0
public void RequestData(){ 
     GraphRequest request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(), new GraphRequest.GraphJSONObjectCallback() { 
      @Override 
      public void onCompleted(JSONObject object,GraphResponse response) { 

       JSONObject json = response.getJSONObject(); 
       try { 
        if(json != null){ 
         String text = "<b>Name :</b> "+json.getString("name")+"<br><br><b>Email :</b> "+json.getString("email")+"<br><br><b>Profile link :</b> "+json.getString("link"); 
         details_txt.setText(Html.fromHtml(text)); 
         profile.setProfileId(json.getString("id")); 
        } 

       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
     Bundle parameters = new Bundle(); 
     parameters.putString("fields", "id,name,link,email,picture"); 
     request.setParameters(parameters); 
     request.executeAsync(); 
    } 
Смежные вопросы