我正在使用 AccessTokenTracker 让我的应用程序了解在线发生的任何权限更改,例如通过笔记本电脑。
Secanario : 该应用程序登录到我的 FB 并获得对“publish_actions”的访问权限。如果用户正在使用他的笔记本电脑或任何其他设备删除“publish_actions”权限,那么我的 AccessTokenTracker 不会使用最新的权限集进行更新。因此代码总是达到
System.out.println("FB already has publish_actions");
问题
如果我要在其他设备上更新我的应用程序的权限,它会在 accessTokenTracker 中更新吗?如果是这样,为什么在我的情况下它没有得到更新?
代码
private AccessTokenTracker accessTokenTracker;
private AccessToken currentAccessToken;
@Override
protected void onCreate (Bundle savedInstanceState) {
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
shareDialog = new ShareDialog(this);
LoginManager.getInstance().registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// App code
System.out.println("FacebookCallback : Success");
fbShareNow();
}
@Override
public void onCancel() {
// App code
System.out.println("FacebookCallback : Cancel");
}
@Override
public void onError(FacebookException exception) {
// App code
System.out.println("FacebookCallback : Erroe");
}
});
accessTokenTracker = new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken newAccessToken) {
currentAccessToken=newAccessToken;
}
};
currentAccessToken = AccessToken.getCurrentAccessToken();
}
@Override
public void onDestroy() {
super.onDestroy();
accessTokenTracker.stopTracking();
}
@Override
public void facebookShare(String msg) {
if (currentAccessToken != null) {
System.out.println("FB already logged in");
if(currentAccessToken.getPermissions().contains("publish_actions")){
System.out.println("FB already has publish_actions");
fbShareNow();
} else{
System.out.println("FB has no publish_actions");
}
}else {
System.out.println("FB not logged in");
LoginManager.getInstance().logInWithPublishPermissions(this, Arrays.asList("publish_actions"));
}
}