0

FacebookSDK 3.0 を使用して画像を投稿しようとしていますが、いくつかの問題に直面しています。アプリを閉じてアプリを再度開くと、常に else 条件になり、if 条件になります。保存する必要がありますsessionか、それとも既に保存されていますか??

          Session mSession = Session.getActiveSession();

    if (mSession != null
            && mSession.getPermissions().contains("publish_actions")) {
        postPhoto();

    } else {

        if (mSession == null) {

            Log.d("Facebook", "Session null");
            mSession = new Session.Builder(this).setApplicationId(
                    "xxxxxxxxxxxxxxx").build();
            Session.setActiveSession(mSession);

        }
        if (!mSession.isOpened()) {

            Log.d("Facebook", "Session not opened");

            Session.OpenRequest sessionRequest = new Session.OpenRequest(
                    this);

            sessionRequest.setPermissions(PERMISSIONS);
            sessionRequest.setCallback(statuscallback);
            sessionRequest
                    .setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK);
            mSession.openForPublish(sessionRequest);

        }

    }

StatusCallback statuscallback = new StatusCallback() {

        @Override
        public void call(Session session, SessionState state,
                Exception exception) {
            // TODO Auto-generated method stub

            if (session.isOpened()) {

                Log.d("Facebook", "Logged in");
                postPhoto();

            }
            if (session.isClosed()) {

                Log.d("Facebook", "Logged out");
            }
        }
    };



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

            Log.d("Facebook", "onActivity Result");
        }

ユーザーをログアウトする必要がある場合はどうすればよいですか??

次のコード onDestroy() を試しました

if (mSession.isOpened())
   mSession.closeAndClearTokenInformation();

上記のコードを destroy メソッドで使用すると、次回アプリを開くたびに常にこの行でエラーがスローされます

mSession.openForPublish(sessionRequest);

みんな助けてください。回答/提案は非常に高く評価されます。

ありがとう

4

1 に答える 1

0

UiLifecycleHelper を使用して、Activity または Fragment のライフサイクル全体でアクティブなセッションを管理できます。通常、すべてのセッション関連データ (アクセス トークン、アクセス許可など) はキャッシュされ、新しい Session() を作成すると、キャッシュされたデータが使用されます (closeAndClearTokenInformation を呼び出す場合を除き、その場合はキャッシュがクリアされます)。ユーザーからの明示的なログアウト時にのみ closeAndClearTokenInformation() を呼び出します。それ以外の場合は、onDestroy() で close() を呼び出します。

また、openForPublish の呼び出しも避けます。常に openForRead を実行してから、session.getPermissions() を呼び出して必要な権限があるかどうかを確認し、さらに必要な場合は requestNewPublishPermissions を呼び出します。

于 2013-03-29T17:20:55.963 に答える