2

ダイアログ リクエストを呼び出す前に、ユーザーが Facebook アプリから自分のアプリを削除したかどうかを確認するにはどうすればよいですか。

Session session = Session.getActiveSession();
    if (session != null) {
        List<String> permissions = session.getPermissions();
        if (!isSubsetOf(PERMISSIONS, permissions)) {
            // //Log.d(TAG,
            // "the session doesnt have the permissions");
            Session.OpenRequest openRequest = null;
            openRequest = new Session.OpenRequest(this);
            openRequest.setPermissions(PERMISSIONS);
            openRequest.setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK);
            session.openForPublish(openRequest);
            return;
        } else {
            // //Log.d(TAG,
            // "the session has enough permissions");
            displayFacebookDialog();
        }
    }

ユーザーがアプリを削除した場合でも、else は引き続き呼び出されます。

public static WebDialog displayFacebookDialog(String picture, OnCompleteListener callback,
        Activity activity) {
    Bundle data = new Bundle();
    data.putString("name", activity.getString(R.string.app_name));
    data.putString("caption", activity.getString(R.string.facebook_caption));
    data.putString("description",
            activity.getString(R.string.facebook_description));
    data.putString("link", activity.getString(R.string.facebook_link));
    data.putString("picture", picture);
    WebDialog feedDialog = (new WebDialog.FeedDialogBuilder(activity,
            Session.getActiveSession(), data)).setOnCompleteListener(callback).build();
    return feedDialog;
}
4

1 に答える 1

2

よし、権限は作成時に Session オブジェクトにバインドされ、getPermissions を呼び出すときに権限を確認する要求は行われないようです。これが意味することは、アクセス トークンが有効でなくなった場所を説明している非同期状態になる可能性があるが、アプリケーションはそれを認識していないということです。

postStatusUpdate() メソッドで FacebookRequestError を取得していると思います。コールバックでこのエラーを確認してから、ログイン ロジックをそのメソッドに配置する必要があります。

于 2013-07-15T16:24:35.170 に答える