Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   Ошибки вконтакте и как с ними бороться (http://www.flasher.ru/forum/showthread.php?t=134349)

Furinax 27.12.2009 19:08

Ошибки вконтакте и как с ними бороться
 
Предлагаю всем опытным разработчикам приложений вконтакте поделиться знаниями о том, как бороться с ошибками при запросе приложения к API вконтакте.
Рылся в документации и не нашел никаких разъяснений, кроме описания самих ошибок:
Код ошибки Описание
1 Unknown error occured.
2 Application is disabled. Enable your application or use test mode.
3 Unknown method passed.
4 Incorrect signature.
5 User authorization failed.

В случае 1 - все ясно, нужно создавать отдельную тему. Случай 2 предельно ясен и тоже не требует обсуждения. 4 случай тоже говорит сам за себя. 3 номер у меня никогда не возникал.

На данный момент у меня составляет трудность понять о чем говорит ошибка №5 "User authorization failed."

Я загрузил приложение на вконтакте. Тест од отключен. Приложение включенно. Залогинился по аккаунтом. Запускаю приложение, а мне в ответ 5 ошибка. Исходя из текста ошибки понятно, что пользователь приложения не авторизовался, но ведь я же залогинлся...
Знающие люди объясните пожалуйсто как с этим бороться. Заранее спасибо!

Anton Riot 27.12.2009 21:05

неправильно составлен запрос. Например, "uid" вместо "user_id" или наоборот. Или не хватает полей запроса. В таком стиле.

Бороться с ошибками - это проверить запрос.

Furinax 27.12.2009 21:41

Буду премного благодарен, если мне разъясните. На примере метода getProfiles.
Вот все, что отправляю:
Код AS3:

var apiID:String = "1763106";
                        var secretKey:String = "код приложения;
                        var methodFromAPI:String = "getProfiles";
                        var testMode:String = "0";
 
                        variablesToSend.method = methodFromAPI;
                        variablesToSend.api_id = apiID;
                        variablesToSend.v = "2.0";
                        variablesToSend.test_mode = testMode;
                        variablesToSend.uids = viewerID;
 
                        variablesToSend.sig = MD5.hash(viewerID + 'api_id=' + apiID + 'method=' + methodFromAPI + 'test_mode=' + 'uids=' + viewerID + testMode + 'v=2.0' + secretKey);

Вот xml полученной ошибки:
Код:

<?xml version="1.0" encoding="utf-8"?>
<error>
 <error_code>5</error_code>
 <error_msg>User authorization failed</error_msg>
 <request_params list="true">
  <param>
  <key>v</key>
  <value>2.0</value>
  </param>
  <param>
  <key>test_mode</key>
  <value>0</value>
  </param>
  <param>
  <key>uids</key>
  <value>null</value>
  </param>
  <param>
  <key>method</key>
  <value>getProfiles</value>
  </param>
  <param>
  <key>api_id</key>
  <value>1763106</value>
  </param>
  <param>
  <key>sig</key>
  <value>05d0003b4a3aeef4ae3369d7fd7e4a67</value>
  </param>
 </request_params>
</error>

Сравниваю все с запросом и вроде все совпадает. Может проблема в сиге опять?
Такое ощущение что я сильно туплю, только вот где..........

udaaff 27.12.2009 22:03

Цитата:

Код AS3:

'test_mode=' + 'uids=' + viewerID + testMode +


Параметры перемешаны.

Furinax 27.12.2009 22:12

Код AS3:

variablesToSend.sig = MD5.hash(viewerID + 'api_id=' + apiID + 'method=' + methodFromAPI + 'uids=' + viewerID +  'test_mode=' + testMode + 'v=2.0' + secretKey);

расставил, ошибка никуда не исчезла. Видать не только это, либо это было ни при чем...

udaaff 27.12.2009 22:21

Расставили, да не в том порядке :)

Furinax 27.12.2009 22:25

Оооооооооочень прошу подсказать в каком правильно и отчего он зависит :confused:

Добавлено через 10 минут
Попробовал согласно порядку параметров в описании ошибки
Код AS3:

variablesToSend.sig = MD5.hash(viewerID + 'v=2.0' + 'test_mode=' + testMode + 'uids=' + viewerID + 'method=' + methodFromAPI + 'api_id=' + apiID + secretKey);

и не угадал:rolleyes: ...........

udaaff 27.12.2009 22:40

1. viewer_id.
2. все те параметры, которые вы передаете в запросе в лексикографическом порядке (по имени параметра).
3. private key.

Furinax 27.12.2009 22:53

Код AS3:

variablesToSend.api_id = apiID;
variablesToSend.method = methodFromAPI;
variablesToSend.test_mode = testMode;
variablesToSend.uids = viewerID;
variablesToSend.v = "2.0";
variablesToSend.sig = MD5.hash(viewerID + 'api_id=' + apiID + 'method=' + methodFromAPI + 'test_mode=' + testMode + 'uids=' + viewerID + 'v=2.0' + secretKey);

И не работает, либо я неправильно понял что такое лексикографический порядок, либо ошибка в чем-то другом...
Это для getProfiles.

udaaff 27.12.2009 23:14

Параметры расставлены, вроде как, правильно. Какое-то значение скорее всего неправильно задано.


Часовой пояс GMT +4, время: 08:11.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.