6

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}

この問題を解決するにはどうすればよいですか。助けてください。よろしくお願いします

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);
            }
        }
    }
4

2 に答える 2

13

私も同じ問題を抱えていましたが、これらの行で解決しました。私の知る限り、既に開かれている新しい権限のセッションをリクエストすることはできません。

Session session = new Session(this);
    Session.setActiveSession(session);
    session.openForRead(new Session.OpenRequest(this).setCallback(callback).setPermissions(Arrays.asList("your_permissions")));

下の行にすでに追加されていることを願っていますonActivityResult()

Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
于 2013-05-22T09:39:38.340 に答える