vk.com:Token confirmation required

io01

Client
Регистрация
07.06.2017
Сообщения
7
Благодарностей
1
Баллы
3
Возникает ошибка ("Token confirmation required") с кодом 25 при работе с аудио через api. У кого-нибудь встречалось? Пробовал обновить токен, но всё равно появляется.
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
напиши подробно что ты при этом делал, сколько потоков, прокси ...
че там в апи говорится на счет 25 ерора? кинь ссылку на апи вк метод
 

io01

Client
Регистрация
07.06.2017
Сообщения
7
Благодарностей
1
Баллы
3
Обычный парсинг постов с целью последующего постинга.. Все остальное работает и других проблем нет, кроме как именно с парсингом аудиозаписей в этом процессе (это к тому, что дело не в потоках и не прокси - весь процесс отстроен очень аккуратно, без лишней нагрузки..). То есть посты размещаются без аудиозаписей в том месте, куда настроен постинг.

В том-то и дело, что в апи нет информации по поводу этой ошибки. Поэтому обратился сюда. Метод audio.getById. Описание метода убрали из общего доступа.
Вероятно, что проблема новая и связана с изменениями апи, о которых мы скоро узнаем больше. Пока что инфы по этой проблеме не нашел.

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

io01

Client
Регистрация
07.06.2017
Сообщения
7
Благодарностей
1
Баллы
3
Решение найдено - если возникает указанная выше ошибка, то необходимо каждый раз обновлять токен.
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
том-то и дело, что в апи нет информации по поводу этой ошибки
я так понимаю, что если ошибки конкретной нет, 25, то С 24 ПО 27 она попадает, и ошибка приравнивается к 24ой ( https://vk.com/dev/need_confirmation ) возможно всплывает окно подтверждения, которое надо одобрить.
 

WEISS

Client
Регистрация
11.12.2015
Сообщения
115
Благодарностей
25
Баллы
28
С аудио перестало API работать сначало с токеном полученным из простого приложения, месяц назад и из официального приложения. Убрали этот метод из списка. Всё это связанно с тем, что они подписались с правообладателями. Но на сегодняшний момент пока всё работает на POST GET запросах, а как дальше будет, посмотрим.
 

bpunk

Client
Регистрация
23.08.2015
Сообщения
182
Благодарностей
31
Баллы
28
Решение найдено - если возникает указанная выше ошибка, то необходимо каждый раз обновлять токен.
Как формируется параметр "receipt"? Кто-нибудь разобрался? При отправке токена на refresh https://api.vk.com/method/auth.refreshToken
У кого-нибудь без него работает? Привязывается ли он к device id? к сожалению нет возможности заглянуть глубже, то есть в код приложения.
 

Mr_Morgan

Новичок
Регистрация
18.07.2017
Сообщения
2
Благодарностей
1
Баллы
1
Как формируется параметр "receipt"? Кто-нибудь разобрался? При отправке токена на refresh https://api.vk.com/method/auth.refreshToken
У кого-нибудь без него работает? Привязывается ли он к device id? к сожалению нет возможности заглянуть глубже, то есть в код приложения.
Нашли ли Вы как формируется параметр reciept?
Если да, то напишите мне, пожалуйста
Я в жабе не шарю, поэтому нет возможности оценить декомпилированный код
 

wmrgn

Новичок
Регистрация
21.07.2017
Сообщения
6
Благодарностей
0
Баллы
1
Присоединяюсь к исследованию. Информации о методе auth.refreshToken нигде нет. Работает ли еще аудио API?
 

wmrgn

Новичок
Регистрация
21.07.2017
Сообщения
6
Благодарностей
0
Баллы
1
Возникает ошибка ("Token confirmation required") с кодом 25 при работе с аудио через api. У кого-нибудь встречалось? Пробовал обновить токен, но всё равно появляется.
Не могли бы вы посмотреть и может что-то посоветовать?
 

wmrgn

Новичок
Регистрация
21.07.2017
Сообщения
6
Благодарностей
0
Баллы
1
Решение найдено - если возникает указанная выше ошибка, то необходимо каждый раз обновлять токен.
как его обновлять, если в документации нет метода для этого?
 

wmrgn

Новичок
Регистрация
21.07.2017
Сообщения
6
Благодарностей
0
Баллы
1
Решение найдено - если возникает указанная выше ошибка, то необходимо каждый раз обновлять токен.
судя по последней Kate, классу com.perm.kate.AudioFragment, просто вызывается метод auth.refreshToken с параметром receipt=токен экземпляра (https://api.vk.com/method/auth.refreshToken?access_token=...&v=...&receipt=токен экземпляра), где токен_экземпляра вычисляется с помощью InstanceID.
Код:
str = InstanceID.getInstance(this.context).getToken("54740537194", "id" + this.account.mid, null);
, где account.mid - скорее всего кука, полученная от ВК после успешной аутентификации. Пока что нет возможности проверить, вечером заморочусь.

Код:
private boolean validateToken(WeakReference<Activity> activity) {
        try {
            String iid_token = KApplication.session.getInstanceIdToken(activity, true);
...
            String new_access_token = KApplication.session.api.refreshToken(iid_token);
            if (TextUtils.isEmpty(new_access_token)) {
                Log.i("Kate.AudioFragment", "Empty new token");
                return false;
            } else if (new_access_token.equals(KApplication.session.api.access_token)) {
                Log.i("Kate.AudioFragment", "Equals token");
                return true;
            } else {
                KApplication.session.setAccessToken(new_access_token);
                KApplication.accountManager.saveAccounts();
                return true;
            }
        }
...
    }

public String getInstanceIdToken(WeakReference<Activity> activity, boolean verbose) {
        String str = null;
        if (VERSION.SDK_INT >= 9) {
            try {
                GoogleApiAvailability googleAPI = GoogleApiAvailability.getInstance();
                int result = googleAPI.isGooglePlayServicesAvailable(KApplication.current);
                if (result != 0) {
...
                } else {
                    str = InstanceID.getInstance(this.context).getToken("54740537194", "id" + this.account.mid, null);
                }
            }
...
        }
        return str;
    }


...
public String Api::refreshToken(String push_token) throws IOException, JSONException, KException {
        Params params = new Params("auth.refreshToken");
        params.put("receipt", push_token);
        return sendRequest(params).optJSONObject("response").optString("token");
    }
 

Mr_Morgan

Новичок
Регистрация
18.07.2017
Сообщения
2
Благодарностей
1
Баллы
1
  • Спасибо
Реакции: wmrgn

wmrgn

Новичок
Регистрация
21.07.2017
Сообщения
6
Благодарностей
0
Баллы
1
Нашёл решение.
https://vk.com/doc150820042_448617633?hash=a81f57b29b26bf88d7&dl=5fe5d3bb2a03ad02de
Скрипт на питоне 3 для метода refreshToken
Все необходимые данные возьмите из просниффанного трафика (домен clients.android.google.com)
а чем заполнять такие поля как <GCM certificate>, <some extra information in packet>, <app version>, <sig-h>, <app id> (или это строка com.vkontakte.android?), <app version name>, <device id>, <certificate>, <app version> (это типа 4.10.2?)?
 

wmrgn

Новичок
Регистрация
21.07.2017
Сообщения
6
Благодарностей
0
Баллы
1

vodka2

Новичок
Регистрация
29.07.2018
Сообщения
1
Благодарностей
0
Баллы
1

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)