Токен к api

Avatar
  • обновлен
  • Отвечен

Как получит токен для API zenmoney? В каком парметре его передавать или в каком заголовке? Приведите минимальный пример запроса на транзакции.

Прикрепленные ответы
Avatar
skvav
  • Ответ

Для начала нужно зарегистрировать клиентское приложение. Тут, по нажатию на "скриптом"

http://developers.zenmoney.ru/index.html

После этого используем полученные consumer_key, consumer_secret и введенный OAuth callback point url в качестве client_id, client_secret и redirect_uri протокола OAuth 2.0. Дальнейшее взаимодействие и доступные методы API описаны тут:

https://github.com/zenmoney/ZenPlugins/wiki/ZenMoney-API

Avatar
Дмитрий Баданин

Всем привет.

Пишу консольное приложение, хочу получать данные из дзенмани.

Зарегистрировал приложение с помощью скрипта, получил следующие данные

  • Consumer Key: ***
  • Consumer Secret: ***

Смутило, что в вики и примере на php используется url

https://api.zenmoney.ru/oauth2/authorize/

А в полученных при регистрации адресах его нет

Попробовал повторить пример:

1. Делаем запрос

GET https://api.zenmoney.ru/oauth2/authorize/?response_type=code&client_id=g2d02e658ac0fe2e9a&redirect_uri=http%3A%2F%2Flocalhost%2Foaut

в ответ получаем html формы

2. Хотим получить code из заголовка Location. Делаем

POST https://api.zenmoney.ru/oauth2/authorize/

username=123&password=123&auth_type_password=Sign I

В ответ получаем 400 error: invalid request

Имя пользователя и пароль верные - проверил в браузере.

Что я делаю не так ?

Avatar
Ryadnov
Цитата от Дмитрий Баданин

Всем привет.

Пишу консольное приложение, хочу получать данные из дзенмани.

Зарегистрировал приложение с помощью скрипта, получил следующие данные

  • Consumer Key: ***
  • Consumer Secret: ***

Смутило, что в вики и примере на php используется url

https://api.zenmoney.ru/oauth2/authorize/

А в полученных при регистрации адресах его нет

Попробовал повторить пример:

1. Делаем запрос

GET https://api.zenmoney.ru/oauth2/authorize/?response_type=code&client_id=g2d02e658ac0fe2e9a&redirect_uri=http%3A%2F%2Flocalhost%2Foaut

в ответ получаем html формы

2. Хотим получить code из заголовка Location. Делаем

POST https://api.zenmoney.ru/oauth2/authorize/

username=123&password=123&auth_type_password=Sign I

В ответ получаем 400 error: invalid request

Имя пользователя и пароль верные - проверил в браузере.

Что я делаю не так ?

Получаем HTML формы + куки
Куки прокидываем в POST

кажется так)

Avatar

Всем привет, при запросе токена получаю ошибку:

{
"error": "invalid_grant"
}

Думал, что oauth криво работает при входе через google oauth. Установил логин и пароль — результат тот же. grant_type ест, ественно, взят из документации. Вот пример запроса:

curl -X POST \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'grant_type=authorization_code&client_id=123&client_secret=123&code=444&redirect_uri=http%3A%2F%2Fexample.com%2Fcb%2F123' \
  https://api.zenmoney.ru/oauth2/token -i

Никто не сталкивался с такими проблемами? Не могу понять что я упустил

Avatar
support
Цитата от Святослав Даниленко

Всем привет, при запросе токена получаю ошибку:

{
"error": "invalid_grant"
}

Думал, что oauth криво работает при входе через google oauth. Установил логин и пароль — результат тот же. grant_type ест, ественно, взят из документации. Вот пример запроса:

curl -X POST \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'grant_type=authorization_code&client_id=123&client_secret=123&code=444&redirect_uri=http%3A%2F%2Fexample.com%2Fcb%2F123' \
  https://api.zenmoney.ru/oauth2/token -i

Никто не сталкивался с такими проблемами? Не могу понять что я упустил

На GitHub много рабочих примеров: https://github.com/search?q=zenmoney

В частности, рекомендуем заглянуть сюда: https://github.com/Ryadnov/zenmoney-php-api-library

Avatar
Цитата от support

На GitHub много рабочих примеров: https://github.com/search?q=zenmoney

В частности, рекомендуем заглянуть сюда: https://github.com/Ryadnov/zenmoney-php-api-library

Да, я читал комменты из этой темы и сверялся с кодом из репы Ryadnov. Именно из-за нее я решил установить пароль на свой акк.

Ради эксперимента спулил zenmoney-php-api-library и авторизироваться через нее. Все получилось!

После этого эксперимента мне удалось установить причину по которой не получалось добыть токен через curl. Как оказалось, ошибка invalid_grant не означает, что что-то не так с grant_type. Эта ошибка была из-за того, что запрос кода авторизации (/oauth/authorize) и запрос токена (/oauth/authorize) содержали разные значения в параметрах redirect_uri, которые я для теста в обоих случаях писал какие-попало :facepalm:

В общем, спасибо за то, что настояли на том, что примеры и вправду рабочие, а я постараюсь в следующий раз относиться серьезнее к редирект урлам при oauth :D

Avatar
Андрей Евко
Цитата от Святослав Даниленко

Да, я читал комменты из этой темы и сверялся с кодом из репы Ryadnov. Именно из-за нее я решил установить пароль на свой акк.

Ради эксперимента спулил zenmoney-php-api-library и авторизироваться через нее. Все получилось!

После этого эксперимента мне удалось установить причину по которой не получалось добыть токен через curl. Как оказалось, ошибка invalid_grant не означает, что что-то не так с grant_type. Эта ошибка была из-за того, что запрос кода авторизации (/oauth/authorize) и запрос токена (/oauth/authorize) содержали разные значения в параметрах redirect_uri, которые я для теста в обоих случаях писал какие-попало :facepalm:

В общем, спасибо за то, что настояли на том, что примеры и вправду рабочие, а я постараюсь в следующий раз относиться серьезнее к редирект урлам при oauth :D

А с google sheets не пробовали связывать?

Avatar
Ryadnov
Цитата от Андрей Евко

А с google sheets не пробовали связывать?

oauth сложновато, но можно

есть есть финальный токен (он не протухает), то все просто

Avatar
Roman N

Всем привет!

Использую метод
POST https://api.zenmoney.ru/v8/diff/
Пытаюсь добавить транзакцию
Получаю ошибку

"error": {
"code": "validationError",
"message": "No time of the last synchronization (lastServerTimestamp) (truncated...)

в serverTimestamp устанавливается значение 0

в currentClientTimestamp устанавливается текущее время
Как быть? Спасибо за ответ.

Avatar
support
Цитата от Roman N

Всем привет!

Использую метод
POST https://api.zenmoney.ru/v8/diff/
Пытаюсь добавить транзакцию
Получаю ошибку

"error": {
"code": "validationError",
"message": "No time of the last synchronization (lastServerTimestamp) (truncated...)

в serverTimestamp устанавливается значение 0

в currentClientTimestamp устанавливается текущее время
Как быть? Спасибо за ответ.

Возможно, вы не прошли авторизацию?

https://github.com/zenmoney/ZenPlugins/wiki/ZenMoney-API

Avatar
Ryadnov
Цитата от support

Возможно, вы не прошли авторизацию?

https://github.com/zenmoney/ZenPlugins/wiki/ZenMoney-API

Возможно стоит в таком случае сделать нормальный ответ? )))