1

現在、AndroidアプリにFacebookSDKを実装しようとしています。私は公式チュートリアルに従い、少なくとも私のGalaxyS2でそれを機能させました。私は自分自身を承認し、自分の壁にメッセージを投稿することができます。しかし、Acer Tabletで試してみると、

11-19 11:15:54.160: W/System.err(7224): java.lang.UnsupportedOperationException: Session: an attempt was made to reauthorize a session that is not currently open.
11-19 11:15:54.160: W/System.err(7224):     at com.facebook.Session.reauthorize(Session.java:1088)
11-19 11:15:54.160: W/System.err(7224):     at com.facebook.Session.reauthorizeForPublish(Session.java:542)
11-19 11:15:54.160: W/System.err(7224):     at de.lochmann.unnuetze.fakten.FacebookConnect.postToWall(FacebookConnect.java:199)

私の質問はandroidfacebooksdkに関連している可能性があります-セッション:保留中のリクエストがあるセッションを再承認しようとしましたが、有効な回答がなかったため、再試行すると思いました。

私のコードの重要な部分:

    if (session != null){
        List<String> permissions = session.getPermissions();
        if (!isSubsetOf(PERMISSIONS, permissions)) {
            this.pendingPublishReauthorization = true;
            Session.ReauthorizeRequest reauthRequest = new Session.ReauthorizeRequest((Activity) _ctx, PERMISSIONS).setRequestCode(REAUTH_ACTIVITY_CODE);
            try {
                session.reauthorizeForPublish(reauthRequest);   
            } catch(UnsupportedOperationException uoe) {
                uoe.printStackTrace();
                Toast.makeText(this._ctx, "Error,  Reauthorization failed",Toast.LENGTH_LONG).show();
            }
            return;
        }

        etc...
    }

私が欠けているものを知っていますか?よろしくお願いします。どんな助けでも大歓迎です。

4

3 に答える 3

1

ここでの問題は、セッションが OPEN 状態でないときに reauthorize を呼び出そうとしていることです。getPermissions() を確認するだけでは、セッションが開いていることを保証するには不十分です。セッションが開いているかどうかを (session.isOpen() を介して) チェックし、開いていない場合は、最初にさまざまな open メソッドのいずれかを呼び出します。

于 2012-11-19T21:19:35.620 に答える
0

https://developers.facebook.com/docs/howtos/androidsdk/3.0/publish-to-feed/をフォローしていたと思います。私はあなたと同様の問題を抱えていました。フィードにパブリッシュし、必要に応じて再承認するロジックを組み込む基本アクティビティを作成しました。次に、その機能が必要なアクティビティでは、このベース アクティビティから継承し、公開ロジックを使用します。super.onActivityResult を呼び出すのを忘れたため、エラーが発生しました

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
            ....
     }

これで問題は解決しました。

于 2012-11-20T11:28:35.260 に答える
0

セッションが前に開かれているかどうかを確認する必要があると思うので、追加してください:

if(!session.isOpened()){ session.reauthorizeForPublish(reauthRequest);
}

私の答えがあなたを助けることを願っています.. :)

于 2013-02-26T12:20:39.853 に答える