android - 检测用户是否已从他的 Facebook 应用程序中删除了我的应用程序

标签 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();
        }
    }

即使用户删除了应用程序,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;
}

最佳答案

好吧,看起来权限在创建时就绑定(bind)到了 Session 对象,并且当您调用 getPermissions 时不会发出确认它们的请求。这意味着您可能会出现您所描述的不同步状态,即您的访问 token 不再有效,但您的应用程序并不知道这一点。

我假设发生的情况是您在 postStatusUpdate() 方法中收到 FacebookRequestError 。您应该在回调中检查此错误,然后将登录逻辑放入该方法中。

关于android - 检测用户是否已从他的 Facebook 应用程序中删除了我的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17640581/

相关文章:

java - 检查API版本

android - 相对于旋转角度的矩形坐标

android - 如何使用 facebook SDK for android 获取用户生日和在线状态

java - 进程 'command ' C :\Program Files\Java\jdk1. 8.0_25\bin\java.exe'' 以非零退出值 2 完成

android - 在 facebook 页面上分享会引发错误

android - Sticky Service 和 Intent Service 在应用被销毁时被杀死

android按钮精细文本对齐

android - 了解 Intent ,传递数据

Android facebook LoginManager.getInstance().logOut() 不进行 Facebook 登录以进行下一次登录调用

android - 无法执行 dex : Multiple dex files define Lcom/facebook/android/AsyncFacebookRunner$1;