Incorrect signature
Incorrect signature
Всем доброго дня.
Уже не первый год замужем, но как ни странно не могу получить удовлетворительный ответ от апи пользуясь текущей документацией и поиском ответов на форумах.
История в 2-х словах:
На данный момент в документации не указано где найти api_secret.
Путем нехитрых вычислений по формуле auth_key = md5(api_id + '_' + viewer_id + '_' + api_secret), взятой здесь http://vkontakte.ru/page2369267, выяснил что api_secret соответствует опции "Защищенный ключ" в настройках приложения. Интересен тот факт, что изменение этой опции НИКАК не влияет на приходящий от ВКонтакте auth_key (все же поменял ключ на первоначальный, мало ли что )
Далее вроде все должно быть просто, выполняю простецкий запрос приведенный как пример в документации тут http://vkontakte.ru/pages.php?o=-1&p=%C ... 0%F1%20API :
http://api.vkontakte.ru/api.php?api_id= ... ebff2488be
подставляю свои значения для api_id, далее формирую sig:
* viewer_id – id текущего пользователя, переданный SWF посредством flashvars при инициализации.
* пар "parameter_name=parameter_value", расположенных в порядке возрастания имени параметра (по алфавиту).
* секрета приложения api_secret (секрет Вы можете менять при редактировании страницы приложения).
sig = md5(viewer_idname1=value1name2=value2secret)
т.е. md5(88****98api_id=18***12method=getFriendsv=2.0api_secret)
В ответе собственно сабж.
Кто-нибудь сталкивался? Может быть конечно я в трех соснах запутался, но очень долго все перепроверял и искал решение прежде чем сюда написать.
Уже не первый год замужем, но как ни странно не могу получить удовлетворительный ответ от апи пользуясь текущей документацией и поиском ответов на форумах.
История в 2-х словах:
На данный момент в документации не указано где найти api_secret.
Путем нехитрых вычислений по формуле auth_key = md5(api_id + '_' + viewer_id + '_' + api_secret), взятой здесь http://vkontakte.ru/page2369267, выяснил что api_secret соответствует опции "Защищенный ключ" в настройках приложения. Интересен тот факт, что изменение этой опции НИКАК не влияет на приходящий от ВКонтакте auth_key (все же поменял ключ на первоначальный, мало ли что )
Далее вроде все должно быть просто, выполняю простецкий запрос приведенный как пример в документации тут http://vkontakte.ru/pages.php?o=-1&p=%C ... 0%F1%20API :
http://api.vkontakte.ru/api.php?api_id= ... ebff2488be
подставляю свои значения для api_id, далее формирую sig:
* viewer_id – id текущего пользователя, переданный SWF посредством flashvars при инициализации.
* пар "parameter_name=parameter_value", расположенных в порядке возрастания имени параметра (по алфавиту).
* секрета приложения api_secret (секрет Вы можете менять при редактировании страницы приложения).
sig = md5(viewer_idname1=value1name2=value2secret)
т.е. md5(88****98api_id=18***12method=getFriendsv=2.0api_secret)
В ответе собственно сабж.
Кто-нибудь сталкивался? Может быть конечно я в трех соснах запутался, но очень долго все перепроверял и искал решение прежде чем сюда написать.
Re: Incorrect signature
Сомнительные вычисления))yuray писал(а):Путем нехитрых вычислений
А Вас этот факт не насторожил?yuray писал(а): Интересен тот факт, что изменение этой опции НИКАК не влияет на приходящий от ВКонтакте auth_key (все же поменял ключ на первоначальный, мало ли что )
api_secret это "Ключ приложения", а не "защищенный ключ"yuray писал(а):выяснил что api_secret соответствует опции "Защищенный ключ" в настройках приложения.
Re: Incorrect signature
Скажите пожалуйста, что сомнительного в моих вычислениях?bodnar писал(а):Сомнительные вычисления))yuray писал(а):Путем нехитрых вычисленийА Вас этот факт не насторожил?yuray писал(а): Интересен тот факт, что изменение этой опции НИКАК не влияет на приходящий от ВКонтакте auth_key (все же поменял ключ на первоначальный, мало ли что )api_secret это "Ключ приложения", а не "защищенный ключ"yuray писал(а):выяснил что api_secret соответствует опции "Защищенный ключ" в настройках приложения.
Предложенный Вами вариант я неоднократно пробовал, с той лишь разницей, что не совпадают auth_key.
Сомнения вызвало многое, в особенности то, что разработчики столь посещаемого ресурса не обновляют документацию. Иначе зачем мне занимать Ваше драгоценное время.
Спасибо.
Re: Incorrect signature
Сомнительного того, что ответ не верный, api_secret это не "Защищенный ключ"
код в студию
код в студию
Re: Incorrect signature
$api_secret = '*********';
print_r($_GET);
echo md5($_GET['api_id'].'_'.$_GET['viewer_id'].'_'.$api_secret);
подставляю "Ключ приложения" - auth_key не сходится, подставляю "Защищенный ключ" - сходится.
print_r($_GET);
echo md5($_GET['api_id'].'_'.$_GET['viewer_id'].'_'.$api_secret);
подставляю "Ключ приложения" - auth_key не сходится, подставляю "Защищенный ключ" - сходится.
Re: Incorrect signature
Так, давайте отделим мух от котлет. Этим способом вы проверяете на своем сайте аутентификцию пользователя в контакте, чтобы не делать дополнительных проверок.
А вопрос был про неверную сигнатуру при запросе к api из приложения.
Так вот при проверке аутентификации нужно использовать защищенный ключ, потому что его невозможно узнать злоумышленнику.
А при выполнении запроса нужен ключ приложения. И я просил код того места вашего приложения, что вызывает ошибку сигнатуры, а не какой-либо еще.
А вопрос был про неверную сигнатуру при запросе к api из приложения.
Так вот при проверке аутентификации нужно использовать защищенный ключ, потому что его невозможно узнать злоумышленнику.
А при выполнении запроса нужен ключ приложения. И я просил код того места вашего приложения, что вызывает ошибку сигнатуры, а не какой-либо еще.
Re: Incorrect signature
Теперь у меня все стало на свои места. Ввело в заблуждение что под api_secret имеются в виду разные вещи. Благодарю.
Re: Incorrect signature
Возник такой же вопрос, как разобраться с этими подписями. Грубо говоря, есть ли алгоритм формирования подписи и get параметров передаваемых на скрипт api.php там же есть какое-то условия что все параметры должны идти в алфавитном порядке?
собственно говоря делаю все как в примере:
где у меня $secret - это "Ключ приложения" который я не могу редактировать.
собственно в любом случае выдается что Incorrect signature
хотя сформированный URL http://api.vkontakte.ru/api.php?api_id= ... 8717038055
открывает без проблем что надо?
собственно говоря делаю все как в примере:
Код: Выделить всё
$signature = "{$viewer_id}api_id={$app_id}method=getFriendsv=2.0{$secret}"; $url = "http://api.vkontakte.ru/api.php?api_id={$app_id}&v=2.0&method=getFriends&sig=".md5($signature);
собственно в любом случае выдается что Incorrect signature
хотя сформированный URL http://api.vkontakte.ru/api.php?api_id= ... 8717038055
открывает без проблем что надо?
Re: Incorrect signature
vitovt
php? Из php вызываются secure методы.
Метод getFriend - не предназначен для этого.
php? Из php вызываются secure методы.
Метод getFriend - не предназначен для этого.
Re: Incorrect signature
так, хорошо, а почему тогда открывая этот урл в браузере я получаю список друзей? или там смотриться моя авторизация вконтакте?Александр писал(а):vitovt
php? Из php вызываются secure методы.
Метод getFriend - не предназначен для этого.