检测用户是否已从其Facebook应用中删除了我的应用

时间:2013-07-14 15:04:18

标签: android facebook-android-sdk

如何在调用对话请求之前检查用户是否已从他的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();
        }
    }

即使用户已删除该应用,其他人仍然被调用。

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

1 个答案:

答案 0 :(得分:2)

好吧,所以看起来权限在创建时绑定到Session对象,并且在调用getPermissions时没有请求确认它们。这意味着您可以使用不同步状态描述您的访问令牌不再有效,但您的应用程序不知道这一点。

我认为发生的事情是你在postStatusUpdate()方法中得到了一个FacebookRequestError。您应该在回调中检查此错误,然后将登录逻辑放入该方法中。