1

我在这里与一种奇怪的行为作斗争。我有一个DialogFragment,里面有一个LoginButton。当点击它时,显然,我希望用户登录 Facebook。

我拥有的代码在一个唯一的活动项目中运行良好。当我将代码带到我的真实项目中时,Facebook 的登录对话框根本不会出现。

我找到了以下网址http://webcache.googleusercontent.com/search?q=cache:OMGyXIBlu34J:developers.facebridge.net/bugs/248010695326479%3Fbrowse%3Dsearch_519371e4319283b59535107+&cd=1&hl=en&ct=clnk&gl=uk

这家伙报告了 Facebook 代码可能存在的问题,事实上我已经调试了代码,它是一个 ContextWrapper。所以我添加了他的代码,但仍然无法正常工作。

我的代码相当简单:

uiHelper = new UiLifecycleHelper(mActivity, callback);
loginButton = (LoginButton) view.findViewById(R.id.login_button);
loginButton.setReadPermissions(Arrays.asList("basic_info","email"));

.....

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

.....


private Session.StatusCallback callback = 
            new Session.StatusCallback() {
        @Override
        public void call(Session session, SessionState state, Exception exception) {
            Log.i(TAG, state.name());
            if(session.isOpened())
                IS_SOCIAL = true;
        }
    };

差不多就是这样......我得到“OPENING”状态,但没有别的。它停在那里。

有人见过这个吗?

问候, 费利佩

编辑 1 发现问题所在:我的活动onActivityResult正在被调用。我不确定为什么。所以我所做的是:

if(requestCode == 64206) //Bad hacking
//df is the DialogFragment
            if(df!=null) {
                df.onActivityResult(requestCode, resultCode, data);
            }

这使它起作用了...我想知道是否有更清洁的解决方案?

4

2 回答 2

4

你应该添加

loginButton.setFragment(this);

到你的片段。这将导致调用片段中的 onActivityResult 而不是包含的活动。

于 2013-06-05T16:37:36.333 回答
0

您可以在按下登录按钮后发布您的 logcat 吗?也许必须有一个提示。登录视图是否显示?您登录并没有获得令牌吗?

于 2013-05-31T07:26:28.393 回答