android - Facebook SDK 4+ 注销无法正常工作

标签 android facebook-sdk-4.0

我正在使用 Facebook SDK 4+,我的问题是当我使用

 FacebookSdk.sdkInitialize(getApplicationContext());
 LoginManager.getInstance().logOut();

要从我的应用程序注销,它无法正常工作。我使用登录按钮返回到我的目标 Activity 。当我按下按钮时,我未经授权再次进入应用程序。我已经安装了 native Facebook 应用程序。没有这个应用程序一切正常。那么我做错了什么或者我遗漏了什么。

Api Key 可以正常工作。

我的登录实现是这样的:

private ImageButton loginButton;
private LoginButton fbbtn;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FacebookSdk.sdkInitialize(getApplicationContext());
}

@Override
protected void onResume() {
    super.onResume();
    callbackManager= CallbackManager.Factory.create();
    fbbtn= (LoginButton)findViewById(R.id.fb_button);
    fbbtn.setReadPermissions("public_profile", "email","user_friends");
    loginButton = (ImageButton) findViewById(R.id.login_btn);
    loginButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            progressDialog = new ProgressDialog(LoginActivity.this);
            progressDialog.setMessage("Loading...");
            progressDialog.show();
            fbbtn.performClick();
            fbbtn.setPressed(true);
            fbbtn.invalidate();
            fbbtn.registerCallback(callbackManager, mCallBack);
            fbbtn.setPressed(false);
            fbbtn.invalidate();
        }
    });
}

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

private FacebookCallback<LoginResult> mCallBack = new FacebookCallback<LoginResult>() {
    @Override
    public void onSuccess(LoginResult loginResult) {
        progressDialog.dismiss();
        GraphRequest request = GraphRequest.newMeRequest(
                loginResult.getAccessToken(),
                new GraphRequest.GraphJSONObjectCallback() {
                    @Override
                    public void onCompleted(
                            JSONObject object,
                            GraphResponse response) {
                        app.setUser(object);               
                    }
                });

        Bundle parameters = new Bundle();
        parameters.putString("fields", "id,name,email,gender");
        request.setParameters(parameters);
        request.executeAsync();
    }

    @Override
    public void onCancel() {
        progressDialog.dismiss();
    }

    @Override
    public void onError(FacebookException e) {
        progressDialog.dismiss();
    }
};

最佳答案

要更改用户个人资料,您需要在您的 FB 应用程序(或者如果您使用的是 Chrome 自定义标签,则在 Chrome 中)中注销

关于android - Facebook SDK 4+ 注销无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40264566/

相关文章:

android - 我们如何从 SDK 知道我们使用的是哪个图形 API 版本

android - 弃用的 FacebookSdk 方法抛出 RuntimeException

Android、Facebook 登录按钮导致崩溃 (SDK 4.0.0)

ios - Facebook SDK 分享链接内容被替换为内容 URL 中的元数据

android - 为什么启动我的 Activity 的 Intent 不包含我在发送到 startActivity() 的 Intent 中放入的额外数据?

java - Android初学者图形布局不起作用

android - 如何防止用户更改系统日期/时间(在 Android 中)?

android - 如何从可绘制的谷歌地图标记中选择不同的图标?

java - Android TextView 在从右到左的设备上右对齐

Android Facebook 4.0 SDK 如何获取用户的电子邮件、出生日期和性别