撤销 android 应用权限未清除 Facebook 访问令牌
Revoking android app permission not clearing facebook access token
我有一个名为 StarterActivity
的 activity,它是我的 android 应用程序的启动器 activity。我提供了一个注销菜单选项,按下它我将撤销所有应用程序权限。我确认所有权限都已被撤销,并且我的应用程序不再列在 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));
}
}
};
但其中 none 似乎有效。访问令牌未清除。如果兑现,我如何使这些数据失效?我希望它在撤销权限时得到清除?还是有更简洁的注销方式?
我正在使用 SDK 4.x。有关烫发的更多详细信息 - https://developers.facebook.com/docs/graph-api/reference/user/permissions
最终起作用的是
LoginManager.getInstance().logOut();
它在内部所做的是将每个访问令牌和配置文件设置为空
public void logOut() {
AccessToken.setCurrentAccessToken((AccessToken)null);
Profile.setCurrentProfile((Profile)null);
}
仅仅撤销权限是不行的。您可以手动将令牌和配置文件设置为 null 或使用上面的 API.
我有一个名为 StarterActivity
的 activity,它是我的 android 应用程序的启动器 activity。我提供了一个注销菜单选项,按下它我将撤销所有应用程序权限。我确认所有权限都已被撤销,并且我的应用程序不再列在 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));
}
}
};
但其中 none 似乎有效。访问令牌未清除。如果兑现,我如何使这些数据失效?我希望它在撤销权限时得到清除?还是有更简洁的注销方式?
我正在使用 SDK 4.x。有关烫发的更多详细信息 - https://developers.facebook.com/docs/graph-api/reference/user/permissions
最终起作用的是
LoginManager.getInstance().logOut();
它在内部所做的是将每个访问令牌和配置文件设置为空
public void logOut() {
AccessToken.setCurrentAccessToken((AccessToken)null);
Profile.setCurrentProfile((Profile)null);
}
仅仅撤销权限是不行的。您可以手动将令牌和配置文件设置为 null 或使用上面的 API.