Предупреждение Facebook Android SDK: «Удаление точки доступа без токенов»

#android #facebook #facebook-android-sdk

#Android #Facebook #facebook-android-sdk

Вопрос:

Несколько дней назад я получил следующее предупреждение по электронной почте от разработчиков Facebook:

В рамках нашего выпуска Graph API 8.0 мы объявили об изменениях в том, как разработчики могут получать доступ к пользовательским изображениям и встроенным конечным точкам FB / IG. Мы включаем дополнительную информацию об этих изменениях ниже, чтобы вы могли вносить соответствующие обновления в свои приложения.

Facebook теперь будет требовать токены доступа к клиенту или приложению для доступа к изображению профиля пользователя при запросе по идентификаторам пользователей. Начиная с 24 октября 2020 года запросы на изображения профиля, сделанные по идентификаторам пользователей без токена доступа, будут возвращать общий силуэт, а не изображение профиля. В то время как токены клиента или приложения будут требоваться для запросов идентификаторов пользователей, они будут оставаться лучшей практикой (и не требуются) для запросов ASID на данный момент. Вы можете прочитать больше об этом изменении в нашей документации разработчика для User Picture.

Исходя из приведенного выше сообщения, я не уверен, будет ли затронут мой блок кода. Вот код:

 val profilePicUrl = Profile.getCurrentProfile().getProfilePictureUri(600, 600).toString()
  

Эта строка получает URI изображения профиля пользователя после входа в систему.

Исходный код из SDK:

 /**
 * Getter for the profile that is currently logged in to the application.
 * @return The profile that is currently logged in to the application.
 */
public static Profile getCurrentProfile()
{
    return ProfileManager.getInstance().getCurrentProfile();
}

/**
 * Getter for the Uri of the profile picture.
 *
 * @param width  The desired width for the profile picture.
 * @param height The desired height for the profile picture.
 * @return The Uri of the profile picture.
 */
public Uri getProfilePictureUri(
        int width,
        int height) {
    return ImageRequest.getProfilePictureUri(this.id, width, height);
}

public static Uri getProfilePictureUri(
        String userId,
        int width,
        int height) {

    Validate.notNullOrEmpty(userId, "userId");

    width = Math.max(width, UNSPECIFIED_DIMENSION);
    height = Math.max(height, UNSPECIFIED_DIMENSION);

    if (width == UNSPECIFIED_DIMENSION amp;amp; height == UNSPECIFIED_DIMENSION) {
        throw new IllegalArgumentException("Either width or height must be greater than 0");
    }

    Uri.Builder builder =
            Uri.parse(ServerProtocol.getGraphUrlBase())
                    .buildUpon()
                    .path(String.format(
                            Locale.US, PATH,
                            FacebookSdk.getGraphApiVersion(),
                            userId));

    if (height != UNSPECIFIED_DIMENSION) {
        builder.appendQueryParameter(HEIGHT_PARAM, String.valueOf(height));
    }

    if (width != UNSPECIFIED_DIMENSION) {
        builder.appendQueryParameter(WIDTH_PARAM, String.valueOf(width));
    }

    builder.appendQueryParameter(MIGRATION_PARAM, MIGRATION_VALUE);

    
  

Я не уверен, повлияет ли это на меня, поскольку я специально не использую Graph API ?

Кто-нибудь может пролить свет на это?

Комментарии:

1. Конечно, вы используете Graph API здесь. То, что вы используете SDK, который инкапсулирует функциональность, так что вам не нужно самостоятельно писать запросы на уровне HTTP, не означает, что API не был задействован. Важный вопрос здесь заключается в том, передает ли это автоматически текущий токен доступа с этим конкретным запросом.

2. @ 04FS Да, ваше последнее предложение в основном то, что мне интересно. Поскольку пользователь уже вошел в систему, я предположил, что текущий токен доступа уже включен в функцию…

3. Ну, тогда копайте глубже в источник и посмотрите, что ImageRequest делает … В какой-то момент, вероятно, будет использоваться какой-то общий объект запроса или метод, и по умолчанию токен доступа, вероятно, будет добавлен туда автоматически, если явно не перезаписан.

4. Добавлено в редакциях выше — оно передается, userId но я не вижу токен доступа @ 04FS

5. Я бы не ожидал, что они будут явно добавлять токен доступа по умолчанию повсюду, в каждом отдельном методе. Но может быть, это Uri.Builder добавляет его или что-то в этом роде.