PDA

Просмотр полной версии : [Вконтакте] Test mode ВКонтакте API


excly
10.09.2009, 21:59
Помогите понять как работает этот режим. В документации написано, что он нужен для того чтобы править приложения, не перезагружая их кажды раз. Если загоняю приложение(тетрис, который в примерах идет) на сервер, то все работает, а с компа-нет.

Wolsh
11.09.2009, 10:29
Вы прописали руками все необходимые значения, которые обычно берутся со страницы с помощью flashvars?

Tr1te
11.09.2009, 11:35
Если загоняю приложение(тетрис, который в примерах идет) на сервер, то все работает, а с компа-нет.
Вообще-то как то странно у вас, сейчас скопировал себе тетрис, откомпилировал, запустился и не из вконтакта. Значит у вас какая то проблема в коде, раз он не запускается. Попробуйте еще раз скачать.

А вот например берем Chat, из тех же примеров, он действительно не работает в обычном моде, и приходиться все время загружать на сайт. Но это можно поменять. У них есть класс: Api.DataProvider, вот в нем то все и просходит, там он обрабатывает Test mode, а принимает этот параметр из класса: Main.DataAccessor, вот в этом файле (61 строка), как раз и указывается этот параметр:
_data_provider = new DataProvider(2, "SOME_SECRET_CODE", viewer_id, false);

Последний параметр false и есть тестмод, если поставите True, сохраните, и откомпилите, то все запуститься и без вконтакта. Пробуйте. :)

excly
12.09.2009, 01:48
В DataProvider тетриса для переменной API_TEST_MODE присваиваю значение true, но не помогает. после запуска приложения с компа при нажатии на "рейтинг" высвечивается 1.undefined. хотя если запускать с контакта, то рейтинг выводится. И еще вопрос, почему файлы DataProvider.as для тетриса и чата разные?

Tr1te
12.09.2009, 12:21
В DataProvider тетриса для переменной API_TEST_MODE присваиваю значение true, но не помогает. после запуска приложения с компа при нажатии на "рейтинг" высвечивается 1.undefined. хотя если запускать с контакта, то рейтинг выводится. И еще вопрос, почему файлы DataProvider.as для тетриса и чата разные?
Ну может разные люди писали, или один человек, с разными мыслями.
Скорей всего Wolsh прав, и просто он не получает flashvars. И чтобы работало не из вконтакта, надо прописывать их вручную.

Это все flashvars:

* api_id – это id запущенного приложения.
* user_id – это id пользователя, со страницы которого было запущено приложение. Если приложение запущено не со страницы пользователя, то значение равно 0.
* group_id – это id группы, со страницы которой было запущено приложение. Если приложение запущено не со страницы группы, то значение равно 0.
* viewer_id – это id пользователя, который просматривает приложение.
* is_app_user – если пользователь установил приложение – 1, иначе – 0.
* viewer_type – это тип пользователя, который просматривает приложение (возможные значения описаны ниже).
* auth_key – это ключ, необходимый для авторизации пользователя на стороннем сервере (см. описание ниже).
* language – это id языка пользователя, просматривающего приложение (см. список языков ниже).

dark256
14.09.2009, 01:33
Бррр...... народ... для АС2 - где и куда этот тэст-мод прописать-то?

Tr1te
14.09.2009, 09:26
Бррр...... народ... для АС2 - где и куда этот тэст-мод прописать-то?
Все примерные приложения написаны на AS3. Если хотите на AS2, то пишите функцию для отправки запроса сами. Там и вставите где хотите этот тест мод. Читайте документацию, там все написано, где этот тест мод используется.
http://vkontakte.ru/pages.php?id=2369267

Wolsh
14.09.2009, 12:22
Все примерные приложения написаны на AS3Чат на ас3, но тетрис на ас2 (заодно ответ на вопрос, почему классы для работы с API разные)))

dark256
14.09.2009, 13:08
Все примерные приложения написаны на AS3. Если хотите на AS2, то пишите функцию для отправки запроса сами. Там и вставите где хотите этот тест мод. Читайте документацию, там все написано, где этот тест мод используется.
http://vkontakte.ru/pages.php?id=2369267

Вот спасибо. Огромное. А я эту страницу типа 2 дня подряд не разглядывал. Вы очень помогли.

Добавлено через 4 минуты
Чат на ас3, но тетрис на ас2 (заодно ответ на вопрос, почему классы для работы с API разные)))
Кстати я так и не понял. О каких классах идет речь? Ну тупой я.
Есть ссыль на два текста с этими классами. но по сути это же просто внешний заинклуденные процедуры.

Кстати парсер для респондов на АС2.0 кто-нть целиковый изваял уже?
Сижу пишу сразу на все случаи жизни распознаватель ХМЛя, но очередной раз чуствую - велосипееед.....

Кстати вопрос. Есть в приведенных примерах классов вот такая функция вызова профиля:
function GetProfiles(SV:String,my_uids:String,my_fields:String) { _method = "method=getProfiles"; _viewer_id = _root.viewer_id;
_api_id = "api_id="+_root.api_id;
_uids = "uids="+my_uids;
_v="v=2.0";
_fields = "fields="+my_fields;
_params = _api_id+"#"+_v+"#"+_method+"#"+_uids+"#"+_fields; _secret = my_sekret; prm = _params.split("#"); temp = prm.join("&");
prm.sort();
_sig = _viewer_id+prm.join("")+_secret;
_md5 = encrypt(_sig);
_addr = "http://api.vkontakte.ru/api.php?"+temp+"&sig="+_md5; LVgetProfiles.sendAndLoad(_addr,this[SV],"POST");
}
У меня вопрос: зачем вот такая конструкция применена?

_params = _api_id+"#"+_v+"#"+_method+"#"+_uids+"#"+_fields; prm = _params.split("#"); temp = prm.join("&");
prm.sort();

Зачем перебирать параметры через "#" чобы потом строчку пересобирать уже через "&" ? Непонятна мне логика, кт-нибудь просветит?

Azo
20.09.2009, 19:37
dark256

Ты где мой код надыбил?))))
# для удобства.... и только

dark256
22.09.2009, 17:32
dark256

Ты где мой код надыбил?))))
# для удобства.... и только

Демон! В твоих же тутторах в том же ффконтакте :))))

Neborya
09.03.2010, 00:57
Можно ли использовать тестовый режим, когда "приложение включено и видно всем"?
Мне выскакивает ошибка: "In test mode application should be disabled or user should be authorized".

HotIceCream
09.03.2010, 21:04
тебе высвечивается ответ на твой вопрос - в тестовом режиме приложение дожно быть вЫключено или пользователь должен быть авторизован ...
что значит пользователь авторизован не очень понимаю... возможно в IE нужно залогинеться...

Wolsh
09.03.2010, 23:16
Авторизован на сайте, т.е. выполнен вход на сайт вКонтакте, и апи известнен ID пользователя. В тестовом режиме автоматически подразумевается ID создателя приложения, и вход не нужен - но это если приложение выключено (т.е. никто кроме создателя и не может его запустить) В случае если приложение видно всем - необходима авторизация на сайте.

Neborya
10.03.2010, 00:15
Wolsh, я был авторизован, когда пытался тестировать (т.е. в браузере была открыта моя страничка).

Wolsh
10.03.2010, 12:52
Страничка это хорошо. А приложение Вы со странички запускали, или со своей машины?)) Как РНР-скрипт должен догадаться, какой именно юзер запустил приложение, делающее сейчас запросы, если это может быть ЛЮБОЙ и данных о его ID нет?

Neborya
10.03.2010, 17:06
Wolsh, как тестировать включённое приложение со своей машины? :)

в тестовом режиме приложение дожно быть выключено или пользователь должен быть авторизован
Что называется авторизацией в данном случае?

Борис Бритва
10.03.2010, 18:22
С чем может быть связано появление ошибки 4 в тестовом режиме? ровно тот же файл залитый в вконтакт работает и запрос проходит (значит ключи, поля, sig -- верные). При запуске локально выдает
<?xml version="1.0" encoding="utf-8"?>
<error>
<error_code>4</error_code>
<error_msg>Incorrect signature</error_msg>
и тд

причем появилось примерно дней 10 назад. До этого локально тоже работало.

udaaff
10.03.2010, 18:30
Возможно, адрес api не тот.

Борис Бритва
10.03.2010, 19:00
ты про http://api.vkontakte.ru/api.php ?

при загрузке на сервер во flashVars отдается такой же
var flashVars = {"api_url":"http:\/\/api.vkontakte.ru\/api.php" и там все работает. а локально Incorrect signature

udaaff
10.03.2010, 19:10
У меня такая ситуация была, что локально "неправильная сигнатура", а когда загрузишь, все работает. Поменял адрес в тестовых параметрах на api.vk.com/api.php, или какой там, и все заработало.

Wolsh
10.03.2010, 19:29
Neborya, у меня к Вам тоже несколько вопросов
1. Вы читать умеете? Я достаточно подробно ответил на Ваш вопрос про авторизацию.
2. Вы смысл слова disabled знаете? Зачем повторяете "должно быть включено.." ? Либо ВЫКЛЮЧЕНО, либо запускаться СО СТРАНИЦЫ (т.е. авторизовавшимся на вКонтакте пользователем - который зашел, введя логин/пароль - как еще-то разжевать?)
3. Вы смысл понятия тестовый режим осознаете? Его смысл ИМЕННО в том, чтобы тестировать со своей машины, не загружая флэшку на сервер после каждой строчки кода.

Neborya
10.03.2010, 19:53
Только что обратил внимание, что HotIceCream дал неправильный перевод ошибки.

Итак, Wolsh, ещё раз:
"In test mode application should be disabled or user should be authorized".
"В тестовом режиме приложение должно быть вЫключено или пользователь должен быть авторизован".

Теперь по поводу твоих вопросов (можно на "ты")?

Вы читать умеете? Я достаточно подробно ответил на Ваш вопрос про авторизацию.
Авторизация в контакте через браузер и авторизация в контакте через приложение - это разные вещи. Меня интересует, как авторизоваться в контакте через приложение, когда это приложение ВКЛЮЧЕНО. Теперь переходим ко второму вопросу:
Либо ВЫКЛЮЧЕНО, либо запускаться СО СТРАНИЦЫ
Если мы вернёмся к описанию ошибки, которое я дал в начале поста, то получается, что ты ошибаешься:
"В тестовом режиме приложение должно быть выключено ИЛИ пользователь должен быть авторизован"
Слово "или" указывает на то, что я как-то могу авторизоваться в тестовом режиме при включённом приложении, не загружая его на сайт.

Вот и весь мой вопрос: как это сделать?

Борис Бритва
10.03.2010, 20:12
У меня такая ситуация была, что локально "неправильная сигнатура", а когда загрузишь, все работает. Поменял адрес в тестовых параметрах на api.vk.com/api.php, или какой там, и все заработало.

Попробовал и так и так. В обоих случаях Incorrect Signature

Wolsh
10.03.2010, 21:42
Neborya, п.3
Подумай сам. Приложение видно всем, но не загружено на сайт. Попахивает торрентами, не? Тестовый режим - когда ты запускаешь флэшку с машины, авторизации не требуется*. Но КАК другие пользователи могут видеть приложение на твоей машине? ИЛИ означает либо одно, либо другое. Либо тестовый режим, либо запуск со страницы (== авторизация, без нее ни один пользователь не увидит твоего приложения, т.к. не зайдет вКонтакт) А уж почему контактовцы не в ладах с английским - спрашивай у них))

* цитата из документации
test_mode – если этот параметр равен 1, разрешает тестовые запросы к данным приложения. При этом аутентификация не проводится и считается, что текущий пользователь - это автор приложения. Это позволяет тестировать приложение без загрузки его на сайт. По умолчанию 0.

Еще раз, внимательно - тестовый режим это запуск приложения вне сервера вКонтакте с возможностью отправлять запросы и получать ответы так, как будто приложение в этой текущей версии загружено на сайт и открыто его авторизованным пользователем. Все остальное - НЕ тестовый режим, даже если в запросах прописано обратное. Либо тестовый, либо авторизованный. Но никак не "авторизоваться в тестовом режиме во включённом приложении".

Читать до просветления.

Neborya
10.03.2010, 22:13
Ок.

Как тогда разрабатывать новые версии, когда приложение уже раскручено, не понятно.

Wolsh
10.03.2010, 22:34
Загружать под другим именем и тестить, в чем сложность? По окончании тестирования меняешь секрет и загружаешь на место - обновляешь "открытую всем" версию. А как ты собирался, постоянно менять приложение которым пользуются, тестировать прямо его - переписывать переменные? А пользователи что же, их данные, результаты их игры/работы?

HotIceCream
11.03.2010, 10:16
Насчет моей ошибки в переводе - хотел написать правильно, а руки написали чушь, сорри.

Насчет авторизации - провел пару тестов...
1) приложение выключено, запускаю флэшку не в браузере - работает
2) приложение включено, запусакаю не в браузере - не работает
3) приложение включено, залогинелся в IE - запускаю не в браузере - работает

теперь более менее понятно что имеется ввиду под авторизацией.

пс .. почему в опере во всех трех случаях не работает? .. Security error вылазиет...

Neborya
11.03.2010, 16:50
3) приложение включено, залогинелся в IE - запускаю не в браузере - работает
Попробовал, не получилось...

Gydronik
03.04.2010, 02:10
Цитата:
Сообщение от HotIceCream Посмотреть сообщение
3) приложение включено, залогинелся в IE - запускаю не в браузере - работает
Попробовал, не получилось...

У меня получилось!!!!