Как передать токен в методе VKApi.uploadWallPhotoRequest?

217
04 февраля 2020, 03:20
VKRequest request = VKApi.uploadWallPhotoRequest(new VKUploadImage(photo, VKImageParameters.jpgImage(0.9f)), 0, 60479154);

Как передать тут access_token?

С помощью VKParameters.from(VKApiConst.ACCESS_TOKEN, access_token) не работает :(

Answer 1

Это 100% кому-то ещё пригодится:) Решение нашёл сам после 3-х часов поиска. Я сохранял сам access_token и user_id после авторизации, чтобы сделать возможным управление несколькими аккаунтами и нашёл ключ в хранилище, из которого VK SDK берёт значение токена для запросов. И порывшись в самом модуле откопал схему сохранения VKAccessToken. Скопировал в основной класс, где мне нужно было это вызывать. Вот что получилось:

void SaveTokenInBaseVK() {
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(VKUIHelper.getApplicationContext());
    SharedPreferences.Editor edit = prefs.edit();
    edit.putString("VK_SDK_ACCESS_TOKEN_PLEASE_DONT_TOUCH", serialize());
    edit.apply();
}
protected String serialize() {
    return VKStringJoiner.joinParams(tokenParams());
}
public int expiresIn = 0;
public String secret = null;
public boolean httpsRequired = false;
public long created = 0;
public String email = null;
public String access_token = "Тут токен, с которым вы работаете";
public String user_id = "ID пользователя, с которым вы работаете";
protected Map<String, String> tokenParams() {
    Map<String, String> params = new HashMap<>();
    params.put(ACCESS_TOKEN, access_token);
    params.put(EXPIRES_IN, "" + expiresIn);
    params.put(USER_ID, user_id);
    params.put(CREATED, "" + created);
    if (scope != null) {
        params.put(SCOPE, TextUtils.join(",", scope));
    }
    if (secret != null) {
        params.put(SECRET, secret);
    }
    if (httpsRequired) {
        params.put(HTTPS_REQUIRED, "1");
    }
    if (email != null) {
        params.put(EMAIL, email);
    }
    return params;
}

Таким образом, я каждый раз в нужном мне месте просто вызываю функцию SaveTokenInBaseVK() и спокойно отправляю запрос VKApi.uploadWallPhotoRequest(). При желании, можно после запроса ещё и очищать хранилище.

READ ALSO
Переход с общим элементом

Переход с общим элементом

Цель сделать переход между окнами с общим элементом (изображением)Нужно из окна А перейти в окно B с общим изображением (изображение ниже)

243
метод configure в Spring Security

метод configure в Spring Security

Есть конфиг в Spring Security:

238
closing inbound before receiving peer&#39;s close_notify в windows 10 при executeQuery() в Intelliji IDEA

closing inbound before receiving peer's close_notify в windows 10 при executeQuery() в Intelliji IDEA

Я пытаюсь создать выполнение запросов из SQL в Intelliji IDEA через JDBCПри выполнении запроса с компьютера на котором стоит Windows 8, запрос выполняется...

232
многопоточность и файлы в java

многопоточность и файлы в java

Я пытаюсь создать программу, потоки которой считывали бы и изменяли файлВсе это обернул в самописную семафору, которая контролирует доступ...

223