2017-11-15 20 views
-1

私のアプリケーションでは、Facebookのログインを使用してアプリケーションにアクセスしています。私の問題は、Facebookのログインを介してユーザー情報を取得することはできませんヌル値を取得しています。ここ
は、そうでない場合は、すべてが正常に動作している私のコールバックAndroid - Facebookのログインからユーザー情報を取得する際のエラー

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

あなたは、Facebookのログインの成功にから非同期タスクを呼び出すことで、プロファイルの詳細を取得することができます

@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(); 
    } 
関連する問題