簡體   English   中英

Android登錄按鈕不調用onActivityResult或回調方法

[英]Android Login button not calling onActivityResult or callback methods

我正在嘗試在我的Android應用程序中實現Facebook登錄按鈕,這是我到目前為止所做的:

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()也不會被執行。 請告訴我,如果我錯過了什么

經過長時間的檢查,我發現我為保持片段的活動設置了noHistory為true。 一旦身份驗證成功導致onActivityResult()未被調用,這就無法再次返回活動。

我也有這個問題,但是通過在父活動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();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM