2017-02-24 172 views
0

我试图实现的Facebook登录到我的Android应用程序如下:https://developers.facebook.com/docs/facebook-login/androidFacebook的登录不会触发回调

通过下面的执行,我能Facebook登录的步骤,登录成功,但后来的成功回调不执行任何操作:

callbackManager = CallbackManager.Factory.create(); 

     loginButton = (LoginButton) findViewById(R.id.button_facebook_sign_in); 
     loginButton.setReadPermissions("email"); 

     // Callback registration 
     loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
      @Override 
      public void onSuccess(LoginResult loginResult) { 
       Intent intent = new Intent(LoginActivity.this, MainActivity.class); 
       startActivity(intent); 
       finish(); 

       Toast.makeText(LoginActivity.this, loginResult.getAccessToken().toString(), Toast.LENGTH_SHORT).show(); 

       Log.v("KJA onSuccess", "Facebook Login succeeded"); 
      } 

      @Override 
      public void onCancel() { 
       // App code 
       Log.v("KJA onCancel", "Cancel called"); 
      } 

      @Override 
      public void onError(FacebookException exception) { 
       // App code 
       Log.v("KJA onError", exception.toString()); 
      } 
     }); 

如何确保回调接收到登录成功通知?

回答

0

之前点击Facebook上,检查用户是否已经登录

try { 
    String curr_id = Profile.getCurrentProfile().getId(); 
    Log.w("FB_CURRENT_ID", "Current ID: " + curr_id); 
} catch (Exception e) { 
    Log.w("FB_CURRENT_ID", "Not Logged In!"); 
} 

试试这个代码按钮点击:

loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 

       @Override 
       public void onSuccess(LoginResult loginResult) { 

        GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() { 

         @Override 
         public void onCompleted(JSONObject object, GraphResponse response) { 
          Log.v("LoginActivity", response.toString()); 
          if (object.has("picture")) { 
           try { 
            String profilePicUrl = object.getJSONObject("picture").getJSONObject("data").getString("url"); 
            String nameOfUser = object.getString("name"); 
            String id = object.getString("id"); 
            Log.w("facebook_id", id); 
            Log.w("facebook_name", nameOfUser); 
            Log.w("facebook_pic", profilePicUrl); 

           } catch (JSONException e) { 
            e.printStackTrace(); 
           } 
          } 
         } 
        }); 
        Bundle parameters = new Bundle(); 
        parameters.putString("fields", "id,name,email,picture.type(large)"); 
        request.setParameters(parameters); 
        request.executeAsync(); 
       } 

       @Override 
       public void onCancel() { 

       } 

       @Override 
       public void onError(FacebookException e) { 

       } 
      } 
    ); 

添加onActivityResult在你的类。代码如下:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    callbackManager.onActivityResult(requestCode, resultCode, data); 
}