Comments 31
Нравится мне за это Дуров, за его попытки(вконтакте.деньги) и за вот такие вот успехи. Постоянно улучшается систему и пытается её повсеместно внедрить.
Авторизация через вконтакте действительно удобная вещь, где не нужна анонимность…
В принципе можно реализовать и полуанонимные вещи — просто не отображать идентификационных данных для одних пользователей для других.
Это секретный ключ вашего приложения, я сейчас отдельно отмечу это в статье. Спасибо.
Забавно, что пост добавили в избранное уже 45 человек, а подняли рейтинг статьи всего 24 (и 6 понизили). :) Полагаю, можно сделать вывод, что где-то половина читателей планируют использовать авторизацию через эти сервисы скрипя зубами.
В прошлых постах аналогичная тенденция, 3 x рейтинг ~ количество добавивших в избранное.
КО внутри меня рвется рассказать про карму и возможность/невозможность плюсовать топики.

но я ему не разрешаю — вдруг, в избранное тоже нельзя с маленькой кармой добавлять…
Спасибо, кэп, я право дело, забыв про людей, у которых могут наблюдаться определенные проблемы с возможностью плюсовать, всё терялся в догадках относительно этого явления.
Тогда напрашивается еще один вывод — интересоваться «Вконтакте» и Mail.ru вредно для кармы. )
Статья хорошая, только вот не понятно, какой процент пользователей, прежде чем вводить парол, посмотрят на url popup'а?
Если пользователь авторизован ВКонтакте, то пароль ему вводить не потребуется, а постоянная авторизация, я уверен, у большинства аудитории этой сети.
Мда, впредь буду детальней читать комментарии к новым релизам, а я раньше 5.4 и не ждал такой удобной вещи.
В 5.4 обещают foo()[1]. А foo()->bar очень давно работает, несколько лет точно (а может и вообще изначально).
Подозреваю, что полученный access_token действует в течение суток и можно обойтись без code. Я прав?
«Expire token'а передается вместе с ним, так что нужно за этим следить. Ну, или просить вечный. И да, все последующие операции выполняются только с токеном, который привязан к домену. » — говорит terion, которому запретили комментировать
Вопрос немного не в тему: а куда ловить code или access token в standalone? Для расширенных методов я не могу использовать redirect_uri, окно редиректом уходит на blank.html, но так случилось, что я все это пытаюсь собрать на titanium, где для desktop-приложении нет компонента WebView, поэтому ни контента окна ни урлы после редиректа (с параметрами) я отловить не могу. Можно ли как-либо это сделать тем же file_get_contents после того, как пользователь авторизовался? Или я рою не туда. Спасибо заранее.
Если мне не изменяет память, средствами Titanium прочел содержимое страницы, на которую ушел редирект — в ней был сам access_token. Давно это было, точно уже не вспомню…
Было бы замечательно, если направишь на путь истины, предстоит тоже сделать авторизацию на titanium, но в нём пока я только начал разбираться.
Да я как-то поигрался и забросил в дальний угол…

Максимум что могу — исходники поискать, отпишите мыло в личку, вышлю если найду.
Решил проникнуться атмосферой OAuth 2.0 и посмотрел как он реализован у разных сервисов. Когда изучал документацию Mail.ru, обратил внимание на примечание по безопасности внизу страницы. Решил попробовать проделать подобное на своем сайте через «ВКонтакте». В результате мой UID-контакта привязался к профилю другого пользователя («жертвы»).
Посмотрел документацию для FaceBook, там описан пример и используется параметр «state», в котором передается ключ (сессия пользователя). Потом посмотрел проект спецификации OAuth 2.0 и в ней параметр «state» тоже предусматривается.
Затем я решил воспользоваться этим параметром и для «ВКонтакте», однако сервер проигнорировал его и вернул ответ без него. Предложенный Mail.ru вариант уникального «request_uri» кажется мне не очень удобным. Может быть есть какие-то еще предложения?
P.S. Думаю, что если спецификация будет окончательно утверждена, то все-таки получится что-то удобное, но пока очень много расхождений в реализации OAuth 2.0 у разных сервисов.
Ценное замечание, странно, что в документации ВКонтакте об этом не было упоминания. Но я бы не стал это считать настолько большой проблемой, по сути пользователь, перешедший по ссылке от злоумышленника, создаст аккаунт vk-id-злоумышленника, а фото и отображаемое имя будет жертвы, причем при следующем заходе жертвы на сайт через авторизацию от этой соц.сети нормальный порядок вещей будет восставлен. Аналогичные действия (создание фейкового аккаунта) можно сделать поменяв фотографию и имя/фамилию и войдя на сайт.
Я думаю что все чуть хуже, т.к. uid-vk-злоумышленника будет привязан к аккаунту жертвы в базе сайта (в моем случае мне нужна своя база юзеров). И когда злоумышленник зайдет на сайт «войти через ВКонтакте», то сайт достанет по полученному vk-uid аккаунт жертвы. Таким образом, злоумышленник будет авторизован под видом жертвы. Кажется так.
Нет, когда злоумышленник Иванов, после того как пользователь Петров зарегистрировался по его ссылке, попытается войти, щелкнув «Войти через ВКонтакте», то ему как и всем откроется окошко «разрешить — отказать», и code он получит свой собственный, и access_token для себя, и данные в уже созданном аккаунте (vk-id-Иванова) обновятся: в качестве отображаемого имени там стояло Петров и фотография была Петрова, а после этого станет Иванов и фотография Иванова.
Как я уже говорил — пользователь из социальных сетей не может узнать свой пароль на моем сайте, не может изменить его или восстановить, поэтому для злоумышленника в используемой у меня схеме авторизации из данной уязвимости выжать получится мало что.
Привет. Может мне здесь кто-нибудь ответит.
Вконтакте можно создавать нативные приложения, stand alone приложения и привязывать сайты.
Мне, вообще, просто нужна oauth аутентификация через вконтакт.
Штука в том, что при попытке аутентификации приложения вконтакт выплевывает
{«error»:«invalid_request»,«error_description»:«OAuth authorization cannot be used from native VK applications»}
А у stand alone приложений и сайтов просто нету client_secret. Просто его негде взять.
Помогите тупому, а?
«Получение доступа к Вконтакте» — нафига всплывает это окно и как его отключить? На durov.at оно не всплывает. Через АПИ без всяких окон можно получить все что надо с публичной страницы пользователя без задавания ему этих вопросов.
$response не приходит. Не подскажите с чем это может быть связано. все параметры вроде указал…
Проблему решил.
Проблема была в том, что контакт естественно не может вернуть json на мою локальную машину, как только выложил в сеть все заработало.
Only those users with full accounts are able to leave comments. Log in, please.