Android Facebook会话问题

use*_*260 6 android facebook facebook-android-sdk

我用以下为Facebook的身份验证代码,它工作正常,但是当我已经取消了身份验证,并试图再次认证的应用程序崩溃和日志被引起的:java.lang.UnsupportedOperationException: Session: an attempt was made to open an already opened session.
在调试我得到了这样的

{Session state:CREATED, token:{AccessToken token:ACCESS_TOKEN_REMOVED permissions:[]}, appId:xxxxxxxxxxxxxxx}
Run Code Online (Sandbox Code Playgroud)

我怎么能解决这个问题.请帮帮我.谢谢

private void askFacebbokAuthentication() {

        Session session = Session.getActiveSession();
        if (session.isOpened()) {

            facebook = true;
            if (!hasPublishPermission()) {

                session.requestNewPublishPermissions(new NewPermissionsRequest(
                        MyActivity.this, PERMISSIONS));

            }
        } else {
            Session.OpenRequest openRequest = null;
            openRequest = new Session.OpenRequest(MyActivity.this);
            if (openRequest != null) {

                openRequest.setDefaultAudience(SessionDefaultAudience.FRIENDS);

                if (!hasPublishPermission()) {
                    openRequest.setPermissions(PERMISSIONS);
                }
                session.openForPublish(openRequest);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

Asw*_*win 13

我也有同样的问题,但我解决了这些问题.据我所知,我们无法请求已经打开的新权限的会话.

Session session = new Session(this);
    Session.setActiveSession(session);
    session.openForRead(new Session.OpenRequest(this).setCallback(callback).setPermissions(Arrays.asList("your_permissions")));
Run Code Online (Sandbox Code Playgroud)

我希望你已经在下面添加了一行 onActivityResult()

Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
Run Code Online (Sandbox Code Playgroud)