Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.12.2009, 02:16
Ralph_DiMarko вне форума Посмотреть профиль Отправить личное сообщение для Ralph_DiMarko Найти все сообщения от Ralph_DiMarko
  № 1  
Ответить с цитированием
Ralph_DiMarko
 
Аватар для Ralph_DiMarko

Регистрация: Dec 2008
Адрес: Одесса
Сообщений: 129
По умолчанию secure запросы из удаленного сервера.

hi all )
Делаю небольшое приложение, дошел до момента операций с secure запросами, и у меня возникла как и у многих проблема с составлением правильного запроса, во флеше
Код AS1/AS2:
function getAppBalance(){
	var host = "http://www._.com.ua/vkontakte/getAppBalance.php";
	var lv:LoadVars = new LoadVars();
	var lv_in:LoadVars = new LoadVars();
	lv_in.onLoad = function() {
		delete this.onLoad;
		tLog.text = unescape(this);
	};
	lv.sendAndLoad(host,lv_in,"POST");
}
в файле getAppBalance.php
PHP код:
<?php
$api_id 
"0000";
$method "secure.getAppBalance";
$secret "код из платежей";
$version "2.0";
$url "http://api.vkontakte.ru/api.php?";
$timestamp time();
$random rand();
$sig md5("api_id=".$api_id."method=".$method."random=".$random."timestamp=".$timestamp."v=".$version.$secret);
ini_set('default_charset','UTF-8'); 
$content "api_id=".$api_id."&method=".$method."&random=".$random."&timestamp=".$timestamp."&v=".$version."&sig=".$sig;
$ch curl_init();
curl_setopt($chCURLOPT_URL,$url); // set url to post to
curl_setopt($chCURLOPT_FAILONERROR1);
curl_setopt($chCURLOPT_FOLLOWLOCATION0);// allow redirects
curl_setopt($chCURLOPT_RETURNTRANSFER,1); // return into a variable
curl_setopt($chCURLOPT_TIMEOUT3); // times out after 4s
curl_setopt($chCURLOPT_POST1); // set POST method
curl_setopt($chCURLOPT_POSTFIELDS$content); // add POST fields
$result curl_exec($ch); // run the whole process
echo $result;
curl_close($ch);
?>
Это был рабочий код, а вот нерабочий:
во флеше аналогично, а в пхп:
PHP код:
<?php
$api_id 
"0000";
$method "secure.withdrawVotes";
$secret "код из платежей";
$version "2.0";
$url "http://api.vkontakte.ru/api.php?";
$timestamp time();
$random rand();
$uid "номер юзера";
$votes "100";
$sig md5("api_id=".$api_id."method=".$method."random=".$random."timestamp=".$timestamp."v=".$version."votes=".$votes."uid=".$uid.$secret);
ini_set('default_charset','UTF-8'); 
$content "api_id=".$api_id."&method=".$method."&random=".$random."&timestamp=".$timestamp."&v=".$version."&votes=".$votes."&uid=".$uid."&sig=".$sig;
$ch curl_init();
curl_setopt($chCURLOPT_URL,$url); // set url to post to
curl_setopt($chCURLOPT_FAILONERROR1);
curl_setopt($chCURLOPT_FOLLOWLOCATION0);// allow redirects
curl_setopt($chCURLOPT_RETURNTRANSFER,1); // return into a variable
curl_setopt($chCURLOPT_TIMEOUT3); // times out after 4s
curl_setopt($chCURLOPT_POST1); // set POST method
curl_setopt($chCURLOPT_POSTFIELDS$content); // add POST fields
$result curl_exec($ch); // run the whole process
echo $result;
curl_close($ch);
?>
Как видно из последнего кода, добавил и всего то две переменные и использую другой метод - хочу списать один голос со счета юзера на счет приложения, и получаю в ответ 4 ошибку все время, почему этот метод и порядок составления запроса какой то странный, постоянно приходится фантазировать в зависимости от нужного запроса, при составлении некоторых запросов заметил, что даже если не учитывать порядок, и не писать переменные по алфавиту то все нормально проходит, помогите пожалуйста разобраться, буду весьма благодарен.
На форуме все темы по поводу контакта пересмотрел, но к сожалению не помогло.

Старый 23.12.2009, 12:30
parl вне форума Посмотреть профиль Отправить личное сообщение для parl Найти все сообщения от parl
  № 2  
Ответить с цитированием
parl

Регистрация: Dec 2009
Адрес: Питер
Сообщений: 45
При формировании подписи переменные упорядочиваются по алфавиту.

Т.е. буква "U" идет перед буквой "V"

PHP код:
$sig =md5("api_id=".$api_id."method=".$method."random=".$random."timestamp=".$timestamp."v=".$version."votes=".$votes."uid=".$uid.$secret); 
PHP код:
$sig md5("api_id=".$api_id."method=".$method."random=".$random."timestamp=".$timestamp."uid=".$uid."v=".$version."votes=".$votes.$secret); 
кстати, будет лучше все переменные для отправки собирать в массив с нужными ключами, делать ksort($array), и foreach'ем формировать запрос.


Последний раз редактировалось parl; 23.12.2009 в 12:35.
Старый 23.12.2009, 15:51
Ralph_DiMarko вне форума Посмотреть профиль Отправить личное сообщение для Ralph_DiMarko Найти все сообщения от Ralph_DiMarko
  № 3  
Ответить с цитированием
Ralph_DiMarko
 
Аватар для Ralph_DiMarko

Регистрация: Dec 2008
Адрес: Одесса
Сообщений: 129
большое спасибо! И вправду была проблема в букве. Буду учить алфавит )

---------------------

Теперь возникла другая проблема, если со свеого компа запускаю приложение то все нормально работает, а когда заливаю в контакт, нет обращения к удаленному серверу. Из-за чего это может быть? Я где то читал что контакт блокирует всякие ссылки, возможно ли это из за этого? Приложение еще не прошло проверку.
Или метод обращения не тот? Подскажите кто уже реализовывал? Спасибо!


---------------------

Оказывается и всего то надо было на хост залить файл crossdomain.xml из http://vkontakte.ru/pages.php?o=-2226515&p=FAQ


Последний раз редактировалось Ralph_DiMarko; 24.12.2009 в 00:50. Причина: все получислось
Создать новую тему Ответ Часовой пояс GMT +4, время: 19:42.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
api , secure , vkontakte , вконтакте

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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