2017-11-15 1 views
-1

내 응용 프로그램에서 내 응용 프로그램에 액세스하기 위해 페이스 북 로그인을 사용하고 있습니다. 내 문제는 페이스 북의 로그인을 통해 null 값을 받고 오전을 통해 사용자 정보를 얻을 수 없습니다입니다.
여기 내 콜백Android - 페이스 북 로그인에서 사용자 정보를 가져 오는 중 오류가 발생했습니다.

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

      Profile profile = Profile.getCurrentProfile(); 
      if(profile!=null){ 
      Log.e("User FirstName", profile.getFirstName()); 
     } 
     } 

     @Override 
     public void onCancel() { 

     } 

     @Override 
     public void onError(FacebookException error) { 

     } 


    }); 

그렇지 않으면 모든 것이 작동 괜찮습니다.
누구나 나를 도울 수 있습니까?

답변

1

당신은 페이스 북의 로그인의 성공에서 비동기 작업을 호출하여 프로필 정보를 얻을 수 있습니다

@Override 
    public void onSuccess(LoginResult result) { 
     fetchProfileDetail(result.getAccessToken()); 

    } 

    public void fetchProfileDetail(final AccessToken fbAccessToken) { 
     GraphRequest request = GraphRequest.newMeRequest(fbAccessToken, new GraphRequest.GraphJSONObjectCallback() { 
      @Override 
      public void onCompleted(JSONObject object, GraphResponse response) { 
       try { 
        JSONObject jsonObject = response.getJSONObject(); 
        String name = jsonObject.optString("first_name"); 
        if(!jsonObject.optString("last_name").isEmpty()){ 
         name+=" "+jsonObject.optString("last_name"); 
        } 
        String fb_id = jsonObject.optString("id"); 
        String emailId = jsonObject.optString("email"); 
        String profileUrl = ""; 
        if (jsonObject.has("picture")) { 
         JSONObject picture = jsonObject.getJSONObject("picture"); 
         JSONObject picData = picture.getJSONObject("data"); 
         profileUrl = picData.optString("url"); 
        } 

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

       } 
      } 
     }); 

     Bundle parameters = new Bundle(); 
     parameters.putString("fields", "id,email,name,first_name,last_name,picture.height(300).width(300)"); 
     request.setParameters(parameters); 
     request.executeAsync(); 
    } 
관련 문제