android - Facebook 登录时未调用 onActivityResult

标签 android callback facebook-sdk-4.x

我有一个带有 facebook 登录的 android 应用程序。我在 fragment 中初始化了 facebook sdk。但是在启动登录过程时从未调用过 onActivityResult。

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        FacebookSdk.sdkInitialize(getContext());
        AppEventsLogger.activateApp(getContext());
        FacebookSdk.setApplicationId(getResources().getString(R.string.facebook_app_id));
        callbackManager = CallbackManager.Factory.create();
        View view=inflater.inflate(R.layout.fragment_signin, container, false);
        gButton=(Button)view.findViewById(R.id.loginGmail);
        fButton=(LoginButton) view.findViewById(R.id.loginFacebook);
        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestEmail()
                .build();
        fButton.setReadPermissions("email");
        gButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                signIn();
            }
        });
        mGoogleApiClient = new GoogleApiClient.Builder(getContext())
                .enableAutoManage(getActivity() /* FragmentActivity */, this /* OnConnectionFailedListener */)
                .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                .build();
        fButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                Toast.makeText(getActivity(),"Success"+loginResult.getAccessToken(),Toast.LENGTH_LONG).show();

            }

            @Override
            public void onCancel() {

            }

            @Override
            public void onError(FacebookException error) {
                Toast.makeText(getActivity(),"Failed",Toast.LENGTH_LONG).show();

            }
        });

        return view;
    }
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        callbackManager.onActivityResult(requestCode,resultCode, data);
        // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
        if (requestCode == RC_SIGN_IN) {
            GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
            handleSignInResult(result);
        }
    }
    private void signIn() {
        Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
        startActivityForResult(signInIntent, RC_SIGN_IN);
    }

但是 onActivityResult 在启动谷歌登录时调用。

最佳答案

我终于得到了答案。 忘记补充了

fButton.setFragment(this);

For fragments this setFragment(this); method is required. Refer this.

关于android - Facebook 登录时未调用 onActivityResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39640400/

相关文章:

android - 为什么 android 构建系统不在库项目中包含 R.class,我该如何解决这个问题?

android - 将自定义对话框 'header' 更改为 AlertDialog 'header'

javascript - .getScript() 回调可多次使用

javascript - 没有动态参数的jquery ajax回调函数

Android 为什么 Facebook SDK 注销按钮不显示?

android webview 显示最后看到的页面

android - 通过单击我的应用程序的启动器图标,将我的应用程序置于前台并且不启动新的 Activity

javascript - 为什么数组未定义?

ios - 如何从 iOS 上的 Facebook SDK 获取用户数据

ios - undefined 不是一个对象(评估 'LoginManager.loginWithPermissions' )