我有一个名为StarterActivity
的活动,它是我的Android应用程序的启动器活动。我已经提供了一个注销菜单选项,我将撤消所有应用程序权限。我确认所有权限都已被撤销,我的应用已不再列在https://www.facebook.com/settings?tab=applications
然而,访问令牌不会被清除。
switch(item.getItemId())
{
case R.id.action_logout:
GraphRequest delPermRequest = new GraphRequest(AccessToken.getCurrentAccessToken(), "/{user-id}/permissions/", null, HttpMethod.DELETE, new GraphRequest.Callback() {
@Override
public void onCompleted(GraphResponse graphResponse) {
if(graphResponse!=null){
FacebookRequestError error =graphResponse.getError();
if(error!=null){
Log.e(TAG, error.toString());
}else {
finish();
}
}
}
});
Log.d(TAG,"Executing revoke permissions with graph path" + delPermRequest.getGraphPath());
delPermRequest.executeAsync();
break;
}
我想在注销时再次重新启动我的StarterActivity Intent。
我添加了
startActivity(new Intent(getApplicationContext(),StarterActivity.class));
清除权限后。但AccessToken.getCurrentAccessToken()
或Profile.getCurrentProfile()
都不为空。也许获得兑现?
我也试过
AccessTokenTracker accessTokenTracker = new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(
AccessToken oldAccessToken,
AccessToken currentAccessToken) {
Log.d(TAG,"Access token changed");
if (currentAccessToken == null){
//User logged out
startActivity(new Intent(getApplicationContext(),StarterActivity.class));
}
}
};
但它们似乎都不起作用。访问令牌未被清除。如果兑现,我该如何使这些数据无效?我希望它能够在撤销权限时获得批准吗?或者有更简洁的退出方式吗?
我使用的是SDK 4.x.关于烫发的更多细节 - https://developers.facebook.com/docs/graph-api/reference/user/permissions
答案 0 :(得分:1)
最终起作用的是
LoginManager.getInstance().logOut();
它内部做的是将每个访问令牌和配置文件设置为空
public void logOut() {
AccessToken.setCurrentAccessToken((AccessToken)null);
Profile.setCurrentProfile((Profile)null);
}
只是撤销权限不会。您可以手动将令牌和配置文件设置为null,也可以使用上面的API。