Android facebook sdk不会在登录后调用回调

帮帮我,

我试图做一个类,处理Facebook登录在我的应用程序。
我的问题是它不工作的所有活动。
在那个活动它不调用回调。
在登录和授权应用程序webview被关闭后,回调不会激活。
在Logcat中打印的最后一个状态是OPENING

这里是我的代码:

public void doLogin() {


        if ((Session.getActiveSession() == null || !Session.getActiveSession().isOpened())) {
            List<String> permissions = new ArrayList<String>();
            permissions.add("email");

            // start Facebook Login
            openActiveSession(activity, true, new Session.StatusCallback() {

                // callback when session changes state
                @Override
                public void call(Session session, SessionState state,
                        Exception exception) {

                    Log.d("Sessionstate", state.toString());
                    if (session.isOpened()) {
                        // make request to the /me API
                        Request.executeMeRequestAsync(session,
                                new Request.GraphUserCallback() {

                                    @Override
                                    public void onCompleted(GraphUser user,
                                            Response response) {
                                        if (prgCheckFB.isShowing())
                                            prgCheckFB.dismiss();
                                        if (user != null) {

                                            Log.e("facebookid", id);
                                            doSomething(user);



                                        }
                                    }
                                });

                    } 
                }, permissions); 
        }
    }



private static Session openActiveSession(Activity activity,
        boolean allowLoginUI, Session.StatusCallback callback,
        List<String> permissions) {
    Session.OpenRequest openRequest = new Session.OpenRequest(activity)
            .setPermissions(permissions).setCallback(callback);
    Session session = new Session.Builder(activity).build();
    if (SessionState.CREATED_TOKEN_LOADED.equals(session.getState())
            || allowLoginUI) {
        Session.setActiveSession(session);
        session.openForRead(openRequest);
        return session;
    }
    return null;
}

doSomething是将用户数据保存在共享首选项中的函数。

有什么不对吗?该函数在某些活动中工作,但不在所有活动中工作。

谢谢

最佳答案
也许你忘记在登录后处理结果…

检查覆盖方法onActivityResult ..

因为它处理的结果回到MainActivity,

也许这可以帮助你的问题..

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Session.getActiveSession().onActivityResult(this, requestCode,
            resultCode, data);
}

更新1

对于较新的SDK使用:

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

转载注明原文:Android facebook sdk不会在登录后调用回调 - 代码日志