Вопросы с меткой [vkontakte-api]
Эта метка создана для вопросов, которые так или иначе связаны с API социальной сети VK (ВКонтакте).
96 вопросов
Конкурсные
Неотвеченные
- Конкурсные 0
- Неотвеченные
- Цитируемые
- Рейтинг
- Неотвеченные (мои метки)
3k показов
VkBotLongPoll игнорирует сообщения из беседы
Попробовал написать чат-бота для вк, используя LongPoll. В чём проблема: на личные сообщения он реагирует, а сообщения из конференции игнорирует. Код: import vk_api from vk_api.bot_longpoll import .
задан 12 мар 2019 в 16:45
1k показов
Как узнать ID пользователя, заходившего на мой сайт?
Есть ли способ/метод узнать ID пользователя ВКонтакте, который открыл страницу на моём сайте? Желательно без установки всяких приложений. Я точного алгоритма работы не знаю, но часто, если заходишь .
задан 9 июл 2015 в 16:42
1k показов
Не работает long-poll vk_api
Делал чат бота на pythone с модулем vk_api, проблема с longpoll: import vk_api account = vk_api.VkApi(token=’grouptoken’) from vk_api.longpoll import VkLongPoll, VkEventType longpoll = VkLongPoll(.
задан 22 сен 2019 в 10:53
11 голосов
7k показов
Как получить комментарии пользователя, оставленные в конкретном сообществе в vk
Как получить все комментарии конкретного пользователя, оставленные на стене под постами в конкретном сообществе в vk? Я рассмотрел все методы, существующие в vk api и пока не нашел способа выполнить .
задан 16 дек 2016 в 22:14
684 показа
Не работает отправка изображения API VK
Делаю отправку фото и сообщения в группу через VK API вроде и фото грузит, и ошибок не выдает, но в группе пусто, может кто сталкивался. $group_id = ‘XXX’; $access_token = ‘XXX’; $message .
задан 20 окт 2018 в 14:00
664 показа
Нужно поставить таймер на бота Вконтакте. Бот написан на Python
Мне нужно добавить таймер боту, так чтобы команду «ТЗ», можно было бы выполнять 1 раз в 30 минут. Пример: я) Тз бот) вот ваше ТЗ я) Тз бот) Подождите 30 минут, перед получением нового задания .
задан 26 мая 2020 в 8:04
5k показов
POST запрос к контакту
Приветствую Начну издалека, есть такая штука unisender — сервис рассылок писем. Там есть API с примерами, называется взял, вставил — вуаля.. И да, в гугле нет такого кол-ва вайна на API юнисендера, в .
задан 24 фев 2014 в 10:09
137 показов
Пожалуйста, помогите распарсить JSON [закрыт]
задан 26 июл 2017 в 17:46
35 голосов
16k показов
Принцип работы Oauth2
Здравствуйте, сразу прошу извинить если вопрос глупый. Собственно сейчас разбираюсь с возможными вариантами авторизации с помощью REST API. Сейчас все социальные сети используют авторизацию OAuth/.
задан 7 июн 2015 в 13:55
15k показов
Как отправить голосовое сообщение через VK API?
Здесь про это не сказано ровным счётом ничего. В ходе «расследования» скачивал различные клиенты. Kate mobile может отправить такое сообщение, но как-то раз я увидел его «голым». Скажем так, как файл .
задан 1 янв 2017 в 10:29
17k показов
Авторизация Вконтакте не работает
session_start(); ?>
задан 2 фев 2013 в 13:25
430 показов
При работе с VK SDK нет некоторых методов и классов
Пытаюсь разобраться с API vk, до этого никогда не работал с API из соц сетей. Не могу понять, почему подчеркивает строчки. Пользуюсь уроком вот этим. Там есть строки вида (коммент — это то, что мне .
задан 11 авг 2015 в 10:17
1k показов
Как распарсить такой JSON из ВК
Имеется такой JSON ответ < response: < count: 19, items: [ < id: 158, title: 'Челябинск', important: 1 >, < id: 88, title: '. задан 7 июн 2016 в 23:45 6k показов
Как отследить результат нажатия на кнопку «Поделиться» VK / Facebook / Twitter?
Есть кнопки «Поделиться» ВКонтакте, Twitter и Facebook. Когда пользователь нажимает — открывается диалоговое окно и нажимает «Поделиться». Мне нужно узнать ответ — поделился ли пользователь или нет? .
задан 16 ноя 2012 в 3:43
3k показов
Получение постов со стены в VK через execute
Пытаюсь получить все посты со стены в VK. Использую метод execute. Код метода: var ITERS = 25; var COUNT = 100; var posts = []; var req_params = < "owner_id" : Args.id, "offset" : 0, .
задан 3 янв 2016 в 17:06
15 30 50 на странице
-
Важное на Мете
Связанные метки
Подписаться на ленту
Лента последних активных вопросов с меткой [vkontakte-api]
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.8.3130
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Авторизация
Для авторизации в платформе VK Cloud используется токен доступа. Он передается в параметре каждого API-запроса.
Есть два способа получения токена доступа:
- OAuth — генерация пары токенов: токена доступа и токена обновления ( refresh token ).
- Сервисный токен — генерация токена, не ограниченного по времени использования.
Получение OAuth-токенов
- Перейдите в личный кабинет VK Cloud.
- Выберите проект.
- Перейдите в раздел AI API → Vision API. Откроется страница с информацией, необходимой для получения токенов:
- OAuth endpoint: адрес для запросов на получение OAuth-токенов;
- OAuth Идентификатор клиента: идентификатор аккаунта, который необходимо передать в параметре client_id запроса;
- OAuth Секретный ключ: ключ, который необходимо передать в client_secret параметре запроса.
- Сгенерируйте токены:
,"children":[\",\n\"client_secret\": \"\",\n\"grant_type\":\"client_credentials\"\n>'\n">],"position":,"end":>>>">1curl -X POST --location 'https://mcs.mail.ru/auth/oauth/v1/token' \ 2--header 'Content-Type: application/json' \ 3--data ' 4"client_id":"", 5"client_secret": "", 6"grant_type":"client_credentials" 7>'В ответе сервера будут два токена:
- access_token : токен доступа для использования в API-запросах к сервису. Он может быть использован многократно, но действителен в течение одного часа. Когда время жизни токена истечет, необходимо будет сгенерировать новый. В проекте одновременно активными могут быть не более 25 токенов доступа.
- refresh_token : токен обновления для генерации нового токена доступа. В проекте одновременно активными могут быть не более 25 токенов обновления. Каждый токен обновления может сгенерировать любое количество токенов доступа, но не более 25 единовременно активных.
Обновление токена доступа
Чтобы сгенерировать новый токен доступа с помощью токена обновления, выполните команду:
,"children":[\",\n\"refresh_token\":\"\",\n\"grant_type\":\"refresh_token\"\n>'\n">],"position":,"end":>>>">1curl -X POST --location 'https://mcs.mail.ru/auth/oauth/v1/token' \ 2--header 'Content-Type: application/json' \ 3--data ' 4"client_id":"", 5"refresh_token":"", 6"grant_type":"refresh_token" 7>'Здесь client_id и refresh_token получены на этапе генерации OAuth-токенов.
Получение сервисного токена
- Перейдите в личный кабинет VK Cloud.
- Выберите проект.
- Перейдите в раздел AI API → Vision API.
- Нажмите Добавить сервисный токен.
- В открывшемся окне выберите тип задач, для которых будет использоваться токен.
- Нажмите Создать. Новый токен появится в списке сервисных токенов.
Как войти в вк по токену 2020
Для примера рассмотрим полный цикл получения доступа к данным, начиная от регистрации новой интеграции.
При этом мы будем рассматривать прямую работу с API авторизации, но вы можете либо воспользоваться нашей готовой библиотекой на PHP для упрощения разработки, либо готовыми библиотеками сторонних вендоров, которые можно найти по ссылке.Мы разрабатывали авторизацию, основываясь на протоколе oAuth 2.0, поэтому вы можете найти в открытых источниках много примеров и документацию, описывающих взаимодействие и логику выполнения запросов.
Оглавление
- Регистрация приложения
- Получение Authorization code
- Обмен кода авторизации на access token и refresh token
- Получение нового access token по его истечении
- Запросы к API с передачей access token
- Хук об отключении интеграции
- Обработка ошибок
Регистрация приложения
Все начинается с того, что вам необходимо зайти в раздел "амоМаркет" того аккаунта, в котором вы будете осуществлять поддержку интеграции в будущем. Обратите внимание:
- Именно за этим аккаунтом будет закреплена Интеграция.
Это означает, что любой из администраторов этого аккаунта сможет управлять интеграцией и получит доступ к общим ключам приложения.
Подробнее о терминах можно прочесть здесь.
По сути этот аккаунт мы будем считать аккаунтом разработчика.
Если вы разрабатываете публичную интеграции, необходимо ознакомиться с требованиями. - Для создания интеграции вам необходимо обладать правами администратора аккаунта
- При подключении приватной интеграции на аккаунте который не является техническим, клиенту необходимо заполнить заявление на отказ от технической поддержки amoCRM. Техническая поддержка не сможет принять обращения по ошибкам системы для фиксации и исправлений на аккаунте где было подписано заявление. Данное ограничение не касается консультаций и вопросов по оплате. Приняв единожды данное соглашение, оно фиксируется в аккаунте amoCRM навсегда. Отозвать соглашение и вернуть аккаунт к прежнему состоянию возможности уже не будет.

После нажатия на кнопку Создать Интеграцию, в появившейся форме, вам необходимо указать Название интеграции, выбрать требуемые доступы и указать описание.
Также необходимо указать Redirect URI – url страницы получения токенов и загрузить логотип интеграции.
Кроме того, есть возможность указать url для хука об отключении интеграции – на него придет хук, когда интеграция будет отключена пользователем. Поле для хука об отключении является необязательным.
- Название интеграции (не более 255 символов) – отображается на странице интеграций, модальном окне для предоставления доступов, а также участвует в поиске по странице интеграций.
- Описание интеграции (не более 65000 символов) – отображается в модальном окне интеграции в аккаунте пользователя. Допускается использование html верстки.
- Ссылка для перенаправления – ссылка на ваш сайт, который будет обрабатывать работу с ключами. Важно, что домен должен быть защищен SSL сертификатом, если вы планируете использовать интеграцию более, чем в одном аккаунте.Просим обратить внимание на то, что мы не поддерживаем кириллические домены и кирилические домены, преобразованные с помощью паникода. Также мы периодически проверяем доступность домена, как обязательное условие для работы интеграции.
- Ссылка для хука об отключении интеграции – на этот адрес будет отправлен GET-запрос при отключении интеграции пользователем. В запросе будет содержаться 2 параметра account_id и client_id.
- Предоставить доступ – минимальный набор необходимых разрешений для работы интеграции. Подробнее про разрешения можно прочитать в статье.
- Иконка интеграции (400х272 jpeg/jpg/png/gif) – отображается в списке интеграций, а также в окне запроса доступа у пользователя
- Контроль дублей – галку необходимо ставить, если ваша интеграция поддерживает Контроль дублей. После установки галки, интеграция будет доступна в настройках контроля дублей.
- Множественные источники – галку необходимо ставить, если ваша интеграция сама управляет источниками через API. Если галка установлена, amoCRM не будет создавать источники по-умолчанию, интеграция сама должна будет создать все необходимые ей источники.
Кроме этих пунктов, администраторам аккаунта, в котором создана интеграция, будут доступны: ID интеграции, секретный ключ интеграции, код авторизации (после включения интеграции).
После заполнения полей вам необходимо сохранить интеграцию.
После этого новая интеграция будет создана и открыто модальное окно созданной интеграции. В открывшемся модальном окне, на вкладке ключи будут отображены необходимые ключи.
Обратите внимание, что Secret key и Integration ID привязаны к интеграции и будут показаны только в вашем аккаунте разработчика.
Получение Authorization code
Напомним, что код авторизации является временным ключом, который действует только 20 минут.
C его помощью вам необходимо в течении этого времени получить refresh token и access токен.
Он является временным, т.к. может быть перехвачен, но в случае перехвата злоумышленник не сможет с ним ничего сделать, если вы не сообщите ему ключи приложения, известные только администраторам аккаунта, в котором создана интеграция.
Получить Authorization code можно тремя способами:
- Скопировать из модального окна установленной интеграции. Этот случай подойдет, если вам необходимо проинтегрировать только один аккаунт amoCRM. Подробнее можно прочитать в разделе Упрощенная авторизация.
- Если в вашей интеграции есть загруженный архив с виджетом, то при его установке вы получите Webhook на указанный в настройках интеграции Redirect URI.
- Получить код через адрес предоставления доступа интеграции. После предоставления доступа, пользовать будет перенаправлен на указанный Redirect URI.
Вы можете упростить разработку при использовании способа получения ключа через GET-параметры, используя готовую Кнопку amoCRM.
Полная логика способа получения ключа через GET-параметры заключается в следующем:

- Пользователь, у которого вы хотите запросить доступ, находится у вас на сайте и может открыть предложенную вами ссылку.
*Внимание: Очень важно, чтобы для пользователя весь процесс был максимально прозрачен и понятен. При клике на ссылку пользователь должен однозначно понимать следующее: произойдет запрос его доступов в его аккаунте amoCRM, какую интеграцию он включает.
Именно поэтому мы предлагаем использовать нашу брендированную кнопку, описание которой вы можете найти на странице Кнопка amoCRM - Генерация ссылки, по которой должен перейти пользователь. Вам необходимо отправить пользователя на URL https://www.amocrm.ru/oauth?client_id= &state=&mode=.
Integration ID вам уже известен.
state – это сгенерированный вами строковый параметр, возможно хеш.
State нужен для того, чтобы при получении ответа от amoCRM, вы могли проверить его достоверность,
сравнив отправленный ключ и полученный в результате, чтобы удостовериться в отсутствии подмены CSRF.
Параметр mode отвечает за обработку запроса на Redirect URI. В случае popup – окно авторизации будет закрыто,
а переход на Redirect URI будет выполнен в основном окне. В случае передачи значения post_message –
перенаправление произойдет в окне, которое было открыто, после обработки кода авторизации вам нужно закрыть окно.
Также можно сообщить информацию об успешности действия в основное окно с использованием функции postMessage. - Перейдя по ссылке, пользователь увидит логотип вашей интеграции, который вы загружали при ее создании, название, а также перечень доступов, которые запрашивает приложение.
Открывать данную страницу мы советуем как модальное окно – в popup. Это позволит пользователю не терять контекста страницы, которая открыла popup. - В случае, если пользователь не авторизован – ему будет предложено авторизоваться в amoCRM, иначе пользователю будет дан выбор из аккаунтов, где он является администратором. Для приватных интеграций, список будет ограничен 1 аккаунтом.
- После выбора аккаунта и нажатия кнопки Разрешить, интеграция будет установлена в выбранный аккаунт,
а пользователь перенаправлен в модальном или основном окне, в зависимости от параметра mode,
на указанный в настройках интеграции Redirect URI c GET-параметрами code, referer, state, from_widget, platform.
Параметр code содержит Authorization code, параметр referer – адрес аккаунта пользователя, параметр state – строку,
которую вы передавали при открытии окна, если строка не была передана, данный параметр возвращен не будет.
Параметр platform показывает, на какой платформе был установлен виджет, российской или глобальной. При установке из аккаунта на
amocrm.ru приходит значение 1, при установке из аккаунта на amocrm.com/kommo.com – значение 2.
Если мы отправляем Webhook после установки виджета, то вам дополнительно придет GET-параметр from_widget - В случае, если пользователь нажмет кнопку Отказать приложению в доступе, он будет перенаправлен на Redirect URI с GET-параметром error=access_denied, а также GET-параметром state, если он был передан.
Пример обработки авторизации, если был передан параметр post_message
При переданном GET-параметре mode со значением post_message в окно предоставление доступов – перенаправление произойдет в самом окне.
Ниже рассмотрим пример общения окна предоставления доступов и основного окна с использованием функции postMessage.
Код ниже размещен в основном окне:
var popup; auth(); // 1. Открывает окно предоставления доступов function auth() < popup = window.open('https://www.amocrm.ru/oauth?client_id=XXX&state=XXX&mode=post_message', 'Предоставить доступ', 'scrollbars, status, resizable, width=750, height=580'); >// 2. Регистрируем обработчика сообщений из popup окна window.addEventListener('message', updateAuthInfo); // 3. Функция обработчик, зарегистрированная выше function updateAuthInfo(e) < if (e.data.error !== undefined) < console.log('Ошибка - ' + e.data.error) >else < console.log('Авторизация прошла') >// 4. Закрываем модальное окно popup.close(); >
Код ниже будет отдан в модальное окно вашим backend сервером при переходе на Redirect URI:
oAuth Postback
После отработки кода выше, основное окно узнает результат. Рекомендуем закрывать модальное окно автоматически,
как это сделано в примере, чтобы у пользователя не возникла путаница в окнах.
Обмен кода авторизации на access token и refresh token
Получив Authorization code, вам необходимо сделать запрос на специальный метод /oauth2/access_token, описанный ниже.
В ответ вы получите пару Access и Refresh token, а также время в секундах, через которое токен истекает.
Access токен аналогичен ключу сессии. Его можно сохранить в приложении и использовать для запросов к API до истечения времени его жизни.
Токен должен быть доступен только вашему приложению, поэтому не рекомендуется сохранять его в cookies браузера,
открытых конфигурационных файлах и т. п.
Метод
Параметры запроса
| Параметр | Тип данных | Описание |
|---|---|---|
| client_id | string | ID интеграции |
| client_secret | string | Секрет интеграции |
| grant_type | string | Тип авторизационных данных (для кода авторизации – authorization_code) |
| code | string | Полученный код авторизации |
| redirect_uri | string | Redirect URI указанный в настройках интеграции. Должен четко совпадать с тем, что указан в настройках |
Как получить токен инстаграм
Начиная с 15 октября 2019г. Instagram перестал поддерживать выдачу Access Token. А в начале 2020 года эти токены перестанут поддерживаться. По ссылке доступна актуальная инструкция по получению Instagram Long-Lived Token
- Откройте страницу https://www.instagram.com/developer/
- Авторизуйтесь в своём аккаунте Instagram (Кнопка "Войти")

- Перейдите в раздел "Manage Clients"

- Если вы видите форму "Developer Signup", то заполните её, если нет, то переходите к п.5
- Ваш сайт - например, https://zaiv.ru
- Номер телефона - например, +79029991230
- What do you want to build with the API (Цель получения токена) - напишите "Instagram widget for my website"
- Поставьте галочку "I accept the API Terms of Use and Brand Guidelines" и нажмите "Sign Up". Вас перенаправит на главный экран раздела Developers, вновь нажмите на "Manage Clients" в верхнем правом углу экрана.
- Нажмите "Register a New Client"

- Заполните вкладку "Details":
- Application Name - Название приложение, например YourWebsite.RU. Не используйте слова Instagram, IG, insta или gram!
- Description - напишите "Instagram widget for my website"
- Company Name - напишите название компании или текст вида YourWebsite.RU
- Website URL - адрес вашего сайта (например, https://zaiv.ru)
- Valid redirect URIs - адрес вашего сайта (например, https://zaiv.ru)
- Privacy Policy URL - укажите ссылку на страницу с политикой конфиденциальности вашего сайта (если такой страницы нет - можно указать адрес сайта, но были случаи ошибок в данной ситуации)
- Contact email - укажите ваш контактный email
- Заполните вкладку "Security":
- Снимите чекбокс "Disable implicit OAuth"
- Нажмите кнопку "Register"

- После заполнения формы, вы будете переадресованы на экран, где отображается Ваш CLIENT ID

- Заполните эту форму и перейдите по сгенерированной ссылке:
Это не скриншот! Это форма, которую надо заполнить. 😉
Получить Token Instagram
Если вы видите ошибку "implicit authentication is disabled", то проверьте снята ли "галочка" в п.7


© 2014. «ZaiV.RU» - Разработка сайтов на 1С-Битрикс.
Разработка мобильных приложений под iOS и Android
Фото и видеосъёмка с воздуха
E-mail: support@zaiv.ru
Телефон: +7 (902) 999-1230