面向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(); }
你可以使用LoginManager.logOut()
看看https://developers.facebook.com/docs/reference/android/current/class/LoginManager/
用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();
在这里共享的喜好的帮助下,你可以完全注销。 下次你可以用不同的帐户注销。