面向Android的Facebook SDK 4 – 如何以编程方式注销

最近,Facebook发布了新的和酷的更新SDK 4。 我试图切换到SDK4使用新function,但是,我正在努力Facebook的loginfunction。

到目前为止,要以编程方式注销Facebook,我使用了:

Session session = Session.getActiveSession(); session.closeAndClearTokenInformation(); 

但是SDK4似乎不再支持Session,在官方文档中他们提到:

在Android上实现Facebooklogin有两种方式:

LoginButton类 – 它提供了一个你可以添加到你的UI的button。 它遵循当前的访问令牌,并可以login和注销人员。

好吧,似乎没有办法以编程方式注销Facebook,除非使用LoginButton。 任何人有任何想法,请在这里分享。

您可以使用LoginManager.getInstance().logOut(); ,即使你使用LoginButton,因为

这个UI元素包装了LoginManager中可用的function。

编辑:只要提到这适用于Facebook SDK v4 。 我不知道他们将来是否会改变它。

不要忘记把FacebookSdk.sdkInitialize(getApplicationContext()); 初始化Facebook的SDK。 请看这里的细节。

SDK4,如果你想彻底解除对,请确保你也从用户的Facebook帐户中删除应用程序。 这种方法完全断开了用户:

 public void disconnectFromFacebook() { if (AccessToken.getCurrentAccessToken() == null) { return; // already logged out } new GraphRequest(AccessToken.getCurrentAccessToken(), "/me/permissions/", null, HttpMethod.DELETE, new GraphRequest .Callback() { @Override public void onCompleted(GraphResponse graphResponse) { LoginManager.getInstance().logOut(); } }).executeAsync(); } 

用loginButton处理它:

 //Check if user is currently logged in if (AccessToken.getCurrentAccessToken() != null && com.facebook.Profile.getCurrentProfile() != null){ //Logged in so show the login button fbLogin.setVisibility(View.VISIBLE); fbLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //log out LoginManager.getInstance().logOut(); gotoLogin(); } }); } 

你可以通过loginpipe理器注销,但你也必须使用graphics请求。 我说的是完全注销,那下次你可以用不同的帐号login。

 new GraphRequest(AccessToken.getCurrentAccessToken(), "/me/permissions/", null, HttpMethod.DELETE, new GraphRequest .Callback() { @Override public void onCompleted(GraphResponse graphResponse) { SharedPreferences pref = DashBoard.this.getPreferences(Context.MODE_PRIVATE); SharedPreferences.Editor editor = pref.edit(); editor.clear(); editor.commit(); LoginManager.getInstance().logOut(); Intent logoutint = new Intent(DashBoard.this,MainActivity.class); logoutint.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(logoutint); } }).executeAsync(); 

在这里共享的喜好的帮助下,你可以完全注销。 下次你可以用不同的帐户注销。