Проблема в том, что этот пользователь входит в мое приложение и дает разрешение на чтение. Код, используемый для этого,
public void onClickLogin() {
LoginManager.getInstance().logInWithReadPermissions(this, PERMISSIONS);
}
Теперь в следующий раз я поместил кнопку, чтобы поделиться приложением на временной шкале facebook. Для этого я использовал этот код.
public void publishStory() {
Set<String> permissions = AccessToken.getCurrentAccessToken().getPermissions();
final List<String> PUBLISH_PERMISSIONS = Arrays.asList("publish_actions");
if (!isSubsetOf(PUBLISH_PERMISSIONS, permissions)) {
Log.d(FBTAG,"facebook publish permission login");
pendingPublishReauthorization = true;
LoginManager.getInstance().logInWithPublishPermissions(this, PUBLISH_PERMISSIONS);
return;
}
ShareLinkContent content = new ShareLinkContent.Builder()
.setContentUrl(Uri.parse("https://developers.facebook.com"))
.setContentTitle("My message ")
.build();
ShareApi.share(content, new FacebookCallback<Sharer.Result>() {
@Override
public void onSuccess(Result result) {
// TODO Auto-generated method stub
Log.d(FBTAG,"Facebook post id is "+result.getPostId());
}
@Override
public void onCancel() {
// TODO Auto-generated method stub
Log.d(FBTAG,"Facebook share cancelled");
}
@Override
public void onError(FacebookException error) {
// TODO Auto-generated method stub
Log.d(FBTAG,"Facebook error during sharing: "+error.getMessage());
}
}
Так что теперь у меня есть и права на публикацию.
Теперь вариант использования, если пользователь удаляет разрешение на публикацию из приложения в Интернете. Эта функция проверяет наличие разрешения на устройстве, которое по-прежнему показывает как предоставленные разрешения (публикация, чтение), поэтому пытается поделиться историей, а затем получает ошибку необходимого разрешения. Таким образом, проблема заключается в том, что AccessToken сохраняется в кеше как SharedPreferences в Android и по-прежнему содержит оба разрешения, в то время как пользователь фактически обновляет предоставленные им разрешения. Есть ли способ обновить токен доступа?