2015-10-14 90 views
1

我想实现我的Android应用程序Facebook的登录按钮,这是我迄今所做的:Android的登录按钮没有调用onActivityResult或回调方法

public class LoginFragment extends BaseFragment { 
    private View mView; 
    private CallbackManager mCallbackManager; 
    private LoginButton mFBLoginButton; 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     FacebookSdk.sdkInitialize(getActivity()); 
     mCallbackManager = CallbackManager.Factory.create(); 
     mView = inflater.inflate(R.layout.login, container, false); 
     mFBLoginButton = (LoginButton) mView.findViewById(R.id.login_facebook_button); 
     mFBLoginButton.setReadPermissions("public_profile", "user_friends","user_birthday","user_about_me","email"); 
     mFBLoginButton.setFragment(this); 
     mFBLoginButton.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 
      Log.d("LoginFragment", "UserId: " + loginResult.getAccessToken().getUserId()); 
     } 

     @Override 
     public void onCancel() { 
      Log.d("LoginFragment", "Operation Canceled"); 
     } 

     @Override 
     public void onError(FacebookException e) { 
      e.printStackTrace(); 
     } 
     }); 
     return mView; 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     getBaseActivity().displayToastMessage("Hey"); 
     mCallbackManager.onActivityResult(requestCode, resultCode, data); 
    } 

我还添加了Facebook活动和应用程序清单中的Id。该应用程序运行良好,当我点击登录按钮,它将我带到Facebook对话框。这里的问题是没有任何回调方法被执行,即onSuccess(),onCancel()和onError()。 onActivityResult()也不会被执行。请告诉我,如果我错过了什么

回答

3

长的检查后,我发现我设定的noHistory该活动举办的片段为真。一旦认证成功导致onActivityResult()未被调用,这就阻止了再次返回到活动。

+0

这解决了我的问题。谢了哥们 – saintjab

0

我也有这个问题,但是通过在父活动OnActivityResult函数中添加方法来解决方法。

@Override 
public void onAttachFragment(Fragment fragment) { 
    super.onAttachFragment(fragment); 
    try { 
     String fragmentSimpleName = fragment.getClass().getSimpleName(); 
     if (fragmentSimpleName.equals("Fragment1")){ 
      frag = (Fragment1) fragment; 
     } 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // facebook.authorizeCallback(requestCode, resultCode, data); 
    super.onActivityResult(requestCode, resultCode, data); 
    try { 
     if (frag != null){ 
      frag.myCallBack(requestCode, resultCode, data); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
相关问题