Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/26: Рейтинг темы: голосов - 26, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 20

Проблемы с авторизацией в Instagram через WPF приложение

03.05.2013, 01:32. Показов 5443. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здравствуйте !
Не получается залогиниться в Instagram из WPF приложения. Я зарегистрировал приложение на instagram.com, получил client_id и client_secret.
Для логина формирую первый запрос на адрес:
C#
1
Uri loginUrl = new Uri("https://instagram.com/accounts/login/?next=/oauth/authorize/?client_id=" + instagramClient_id + "&redirect_uri=" + instagramRedirectUrl + "&response_type=token");
Далее формирую POST запрос с логином, паролем и hidden полем с формы авторизации на адрес:
C#
1
Uri oauthUrl = new Uri("https://instagram.com/oauth/authorize/?client_id=" + instagramClient_id + "&redirect_uri=" + instagramRedirectUrl + "&response_type=token");
В ответ получаю - (403) Forbidden.
Причём получаю чтобы я ни делал. Единственное, что показалось мне не так - куки. Браузер получает 8 куков, а моё WPF-приложение только 2. Я пробовал захардкодить эти куки в CookieContainer, что так же привело к ошибке 403 Forbidden. Хэдеры все копировал из Fiddler'a, что с ними, что без них результат один. Может быть кто-то сталкивался с подобным или делал подобные приложения для Instagram?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.05.2013, 01:32
Ответы с готовыми решениями:

Instagram API: постинг в инстаграм через Web-приложение
Как сделать постинг в инстаграм через ВЕБ приложение. (по стандарту АПИ инстаграма не дает такой возможности, но как-то ее реализуют). ...

Как проводить всякие манипуляции на сайте через приложение WPF
День добрый. Хочу чтобы через мою программу WPF можно было проводить всякие манипуляции на сайте (допустим есть конкретный сайт - не...

Проблемы с авторизацией
Добрый день. Прошу не пинать сильно, давно работал с делфи. ВСЕ забыл) Надо написать программу для авторизации на нескольких сайтах,...

15
Просто хороший человек
 Аватар для sannee
392 / 182 / 24
Регистрация: 26.04.2011
Сообщений: 434
03.05.2013, 02:36
Ну вообще-то через WPF не получится так просто.
Смотрите, когда вы отправляете примерно такой запрос
Code
1
https://instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token
то, в том случае если пользователь не авторизирован на сайте(не передаются нужные куки), происходит редирект на страницу авторизации.
Поэтому делаем следующее:
1. Делаем запрос на
Code
1
https://instagram.com/accounts/login/
и получаем весь html. и сохраняем полученные куки
2. Дальше смотрим на форму авторизации:
HTML5
1
2
3
4
5
6
7
8
9
10
11
<form method="POST" id="login-form" class="adjacent" action="/accounts/login/">
                <input type="hidden" name="csrfmiddlewaretoken" value="483301b520eb5eabeb4b35e4b5da743a"/>
                <ul class="errorlist"><li>Обязательное поле.</li></ul>
<p><label for="id_username">Имя пользователя:</label> <input name="username" maxlength="30" autocapitalize="off" autocorrect="off" type="text" id="id_username" /></p>
<ul class="errorlist"><li>Обязательное поле.</li></ul>
<p><label for="id_password">Пароль:</label> <input autocapitalize="off" autocorrect="off" type="password" name="password" id="id_password" /></p>
                <p class="form-actions">
                    <a href="/accounts/password/reset/">Забыли пароль?</a>
                    <input type="submit" class="button-green" value="Войти" />
                </p>
            </form>
видем, что для того чтобы получить куки нужно отправить ПОСТ запрос на
Code
1
https://instagram.com/accounts/login/
передав следующие параметры
1) csrfmiddlewaretoken = 483301b520eb5eabeb4b35e4b5da743a где 483301b520eb5eabeb4b35e4b5da743a при каждом обновлении страницы будет разным, поэтому его нужно вырезать из html, например реджексом
2) username = Нужный_Логин
3) password = Нужный_Пароль
4) Также передаем куки которые были сохранены в пункте 1

3. Дальше, когда делаем запрос, нужно при принятии ответа отключить редирект. Отправили запрос, в ответ должны прийти куки, добавляем пришедшые куки к тем что уже были сохранены, и при каждом последующем запросе передаем все сохраненное.

4. Дальше делаем вот такой запрос, естественно подставляя данные своего приложения и передавая все ранее сохраненные куки -
Code
1
https://instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token
5. В ответе придет токен. Сохраняем его в какой-то переменной

6. Делаем запрос на получение данных подставляя полученный токен
Code
1
http://https://instagram.com/#access_token=ACCESS-TOKEN&scope=likes+comments+basic
Не забываем передать куки.

likes+comments+basic это scopes:
basic - to read any and all data related to a user (e.g. following/followed-by lists, photos, etc.) (granted by default)
comments - to create or delete comments on a user’s behalf
relationships - to follow and unfollow users on a user’s behalf
likes - to like and unlike items on a user’s behalf

7. В ответе должны придти запрошенные данные ползователя. Если пользователь не подписан на ваше приложение, то оно скорее всего запросит разрешение доступа к данным, поэтому после запроса в пункте 6, мы должны найти в хтмл, то что нужно и куда нужно отправить серверу информацию о том, что кнопочка "разрешить" нажата.

8. "Нажали" кнопку "разрешить", дальше в ответе должны придти все запрошенные данные.
0
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 20
03.05.2013, 02:55  [ТС]
Спасибо, за такой подробный ответ, но я в общем-то так и делаю.
На 4-ом шаге получаю 403 Forbidden.
Пробовал даже сначала запрос на instagram.com/ потом на /acounts/login/, а потом уже POST запрос с логином и паролем. Всегда приходит 2 куки, а в браузер 8.
0
Просто хороший человек
 Аватар для sannee
392 / 182 / 24
Регистрация: 26.04.2011
Сообщений: 434
03.05.2013, 02:58
Может сервер фильтрует по браузеру, дело в том что в хидерах передается имя и версия браузера, можно попробовать ее передавать
0
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 20
03.05.2013, 03:00  [ТС]
Да, хэдеры все копировал из браузерных. Что с ними что без них одно и то же.
0
Просто хороший человек
 Аватар для sannee
392 / 182 / 24
Регистрация: 26.04.2011
Сообщений: 434
03.05.2013, 03:32
А киньте ссылку, которая формируется у вас на 4 пункте

Добавлено через 6 минут
В личку

Добавлено через 23 минуты
А если без кукисов отправлять запрос, то тоже 403?
0
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 20
03.05.2013, 03:34  [ТС]
Попробовал без кукисов - 403.
0
Просто хороший человек
 Аватар для sannee
392 / 182 / 24
Регистрация: 26.04.2011
Сообщений: 434
03.05.2013, 03:38
тогда вы либо что-то не понимаете, либо что-то не то делаете, т.к. я только что отправил запрос на
https://instagram.com/accounts... type=token без кукисов и дополнительных хидеров, и получил ответ 200 + html код страницы авторизации...
0
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 20
03.05.2013, 03:40  [ТС]
после этого нужно отправить логин, пароль и Hidden поле в POST запросе, с целью получения токена
0
Просто хороший человек
 Аватар для sannee
392 / 182 / 24
Регистрация: 26.04.2011
Сообщений: 434
03.05.2013, 03:45
Цитата Сообщение от nkws Посмотреть сообщение
после этого нужно отправить логин, пароль и Hidden поле, с целью получения токена
ну не совсем так, это нужно отправить для авторизации на сайте, а потом уже нужно отправлять еще один запрос на токен. Но хотя он в конце в вашем случае все-таки может отправить вам редирект на токен =)
Но я не вижу смысла делать запрос для авторизации на сайте, если уже при отправки запроса https://instagram.com/accounts... type=token у вас 403 что с куками, что без них...
0
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 20
03.05.2013, 03:59  [ТС]
Да нет же, первую страницу я получаю и регэкспом вытаскиваю форму для формирования POST запроса, а так же и куки, отправляю всё это далее и получаю 403. По идее (как это бывает обычно) в ответ приходит страница для подтверждения прав приложению, и далее токен.
Вот строка POST запроса:
csrfmiddlewaretoken=513c7a9297108cf0aee5 b86d2f51dc2d&username=<login>&password=< password>
0
Просто хороший человек
 Аватар для sannee
392 / 182 / 24
Регистрация: 26.04.2011
Сообщений: 434
03.05.2013, 04:02
ну тогда не знаю чем помочь, если логин/пароль верный, то все должно фурычить)
0
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 20
03.05.2013, 04:08  [ТС]
Скопипастил логин и пароль из студии в браузер - всё работает... Мистика....
0
 Аватар для ITL
284 / 255 / 73
Регистрация: 17.07.2012
Сообщений: 618
24.06.2013, 22:48
дело в куки
0
Просто хороший человек
 Аватар для sannee
392 / 182 / 24
Регистрация: 26.04.2011
Сообщений: 434
24.06.2013, 22:53
Цитата Сообщение от ITL Посмотреть сообщение
дело в куки
Возможно, но nkws же сообщил, что он все хидеры(в частности куки) сохраняет и аттачит их к request'у
0
 Аватар для ITL
284 / 255 / 73
Регистрация: 17.07.2012
Сообщений: 618
26.06.2013, 18:42
Возможно, но nkws же сообщил, что он все хидеры(в частности куки) сохраняет и аттачит их к request'у
Вообщем проще всего разобраться с библиотекой InstaSharp и все будет ок.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.06.2013, 18:42
Помогаю со студенческими работами здесь

Проблемы с авторизацией
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, bool given in Заканчивается неверно, Авторизация не пройдена. Где...

Проблемы с авторизацией
Есть такой код: &lt;?php if (isset($_POST)) { $name=mysql_real_escape_string($_POST); $pass=mysql_real_escape_string($_POST); ...

Проблемы с авторизацией
Привет всем! Возникла проблема, топчусь на одном месте не могу ничего придумать. Сделала окно авторизации с двумя текстовыми полями (логин...

Проблемы с БД и авторизацией
Вообщем, какие бы я данные не ввел в форму, то логин отображается всегда &quot;1&quot;. Если убрать одно &quot;=&quot; в условии, то сразу идет...

Проблемы с авторизацией на сайте
Добрый день, возникли проблемы с авторизацией на сайте http://advego.ru. В архиве находится сам код програмки, на скринах показаны...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru