0

Facebookがユーザーに公開許可を要求する方法について提供する例からのこのコードのチャンク(以下)がありますが、唯一の問題は、fbダイアログがポップアップしてユーザーに「このアプリに公開権限を与えますか?」アプリが呼び出され、以下のコード (この場合は asynctask api リクエスト) を実行し続けます。が正常に付与されました) {

asynctask API リクエストを実行してデータベースを更新する

}

多分私は何かが欠けているか、本当にばかげていますが、これは彼らの恐ろしい実装ではありませんか? プロが公に使用する API が boolean 、文字列 ... if ステートメントを作成するために使用できる何かを返す必要があるのは、かなり標準的ではありませんか?!?

private void turnOnFacebookPublishing() {
        Session session = Session.getActiveSession();
        if (session != null) {
            Log.i("sharedprefs fbPublishBool at start of turnOnFbPublish", String.valueOf(sharedprefs.isFacebookPublishingOn()));
            // Check for publish permissions    
            List<String> permissions = session.getPermissions();
            Log.i("permissions prior to if", permissions.toString());
            if (!isSubsetOf(PERMISSIONS, permissions)) {
                pendingPublishReauthorization = true;
                Session.NewPermissionsRequest newPermissionsRequest = new Session
                        .NewPermissionsRequest(this, PERMISSIONS);
                session.requestNewPublishPermissions(newPermissionsRequest);

            }

// asynctask api request to my api that updates a record on my db that determines a users Facebook publishing preference goes here
             }

}
4

1 に答える 1

0

応答を得るには 2 つの方法があります。

  1. session.addCallback() を介して、Session.Callback をセッション オブジェクトにアタッチします。
  2. newPermissionsRequest.setCallback() を介して、Session.Callback を newPermissionsRequest にアタッチします。

次に、アクティビティまたはフラグメントの onActivityResult メソッドをオーバーライドして Session.getActiveSession().onActivityResult を呼び出すと、コールバックが呼び出されます。

一部のデータを直接返すのではなくコールバックが必要な理由は、これが非同期操作であるため (別のアクティビティを開始するインテントを作成する)、onActivityResult を介して返されるまで結果がわからないためです。

于 2013-08-16T16:34:33.247 に答える