Facebook登录无效。上次工作了

时间:2014-02-24 08:08:42

标签: android facebook facebook-graph-api

我正在尝试通过Facebook SDK登录并通过Graph检索用户的fb id。以下是实施:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    /* Facebook Authentication  */
    LoginButton authButton = (LoginButton) rootView.findViewById(R.id.authButton);
    authButton.setOnErrorListener(new OnErrorListener() {

        @Override
        public void onError(FacebookException error) {
            Log.i(TAG, "Error " + error.getMessage());
        }
    });
    // set permission list, Don't forget to add email
    authButton.setReadPermissions(Arrays.asList("basic_info", "email"));

    // session state call back event
    authButton.setSessionStatusCallback(new Session.StatusCallback() {
        @Override
        public void call(Session session, SessionState state,
                         Exception exception) {

            Log.i(TAG, session.toString());
            if (session.isOpened()) {
                // not accessed
                Log.i(TAG, "Access Token" + session.getAccessToken());
                Request.newMeRequest(session, new Request.GraphUserCallback() {
                    @Override
                    public void onCompleted(GraphUser user, Response response) {
                        if (user != null) {
                            Log.d("Social", user.getId());
                            // not accessed
                        }
                    }
                }).executeAsync();
            }
        }
    }); // Facebook Auth end
}

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

    Session.getActiveSession().onActivityResult(getActivity(), requestCode, resultCode, data);
}

布局中的Facebook登录按钮:

        <com.facebook.widget.LoginButton xmlns:fb="http://schemas.android.com/apk/res-auto"
            android:id="@+id/authButton"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/textView"
            fb:login_text="Login with Facebook"
            fb:logout_text="Logout" />

一切都很好。我可以看到蓝色登录按钮。但是当我按下登录时,它返回了这一行:

{Session state:OPENING, token:{AccessToken token:ACCESS_TOKEN_REMOVED permissions:[]}, appId:xxxxx}

我已经在设置中设置了Keyhash,并且App ID是正确的。

我正在使用Facebook SDK 3.7。在此之前它有效。在Facebook更新其SDK后,它不再起作用了。

这段代码出了什么问题?

1 个答案:

答案 0 :(得分:0)

嘿,愚蠢的错误。

而不是覆盖片段中的onActivityResult,我必须将其放在托管片段的MainActivity中。

内部主要活动:

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

    Session.getActiveSession().onActivityResult(getActivity(), requestCode, resultCode, data);
}