Комментарии 79
А возможно ли таким образом получить имя пользователя хотя бы?
Можно, но через Javascript API лишь (прошу поправить, если я не прав, но в документации про это ни слова).
Т.е., видимо, если хочется сохранить Имя пользователя Вконтакте — нужно сначала получить его через Javascript, а после — отправить результат в свое приложение.
Т.е., видимо, если хочется сохранить Имя пользователя Вконтакте — нужно сначала получить его через Javascript, а после — отправить результат в свое приложение.
ссылку не подскажете где посмотреть про этот Javascript API?
У меня в голове возникает только один вопрос: Почему документация по технологиям разбросана по всему интернету? То userapi.com / userapi.ru / durov.at и т.д. Что нельзя это в один раздел запихнуть?? например dev.vkontakte.ru
Хороший вопрос. Качество документации и ее разброс по всему инет, а также отсутствие не то что поддержки, а даже пути баг репорта — наводит на плохие мысли.
Хм, похоже, нынче ссылка эта недоступна.
Тогда так: http://vkontakte.ru/club1
Тогда так: http://vkontakte.ru/club1
Например, вот так — ссылка на статью в моем блоге
т.е в теории доверять этой информации смысла нет?
Кстати, все таки есть адрес api.vkontakte.ru/api.php, на который можно посылать команды для совершения внутренних действий, например перевести голоса от приложения пользователю и получить результат операции, возможно поддерживаются и другие методы, например, для получения информации о пользователе (уже авторизовавшемся на вашем сайте через open api).
vkontakte.ru/pages.php?o=-1&p=%C7%E0%F9%E8%F9%E5%ED%ED%EE%E5%20%E2%E7%E0%E8%EC%EE%E4%E5%E9%F1%F2%E2%E8%E5%20%EF%F0%E8%EB%EE%E6%E5%ED%E8%FF%20%F1%20API
vkontakte.ru/pages.php?o=-1&p=%C7%E0%F9%E8%F9%E5%ED%ED%EE%E5%20%E2%E7%E0%E8%EC%EE%E4%E5%E9%F1%F2%E2%E8%E5%20%EF%F0%E8%EB%EE%E6%E5%ED%E8%FF%20%F1%20API
А вот тут вопрос о безопастрости такого решения: я почитал документацию OpenAPI, и не нашел никаких данных о подписи ответных данных от API. Иными словами любой может подделать информацию о себе, которая будет получаться через Javascript (например подделать результат запроса getProfiles).
Если я не прав, поправьте меня.
Если я не прав, поправьте меня.
Да, все так. Но вот тут уже рассказали про другой способ: http://habrahabr.ru/blogs/php/92518/#comment_2800633
Сказать можно много в ответ. Но я лишь спрошу — как с получением email?
Судя по всему, никак. Да и слишком большой дырой в безопасности было бы давать email пользователей сторонним сайтам.
Для блога например авторизация нафиг не нужна. Нужна идентификация и мыло.
А насчет дыры — поясните, если не трудно.
А насчет дыры — поясните, если не трудно.
Назвав это «дырой», я конечно, немного преувичил, но вряд ли вконтакте будет отдавать всем кому попало email'ы своих пользователей. Если я не прав и вконтакте уже это делает — пожалуйста, поправьте, кто может =)
Что значить кому попало?
Человек хочет авторизоваться на сайте. Он может это сделать вручную введя вся данные, подтвердив мыло и так далее. Либо подтвердив свои данные через сторонний сервис в два клика.
Проблема в том что мне надо знать 1. Имя 2. Мыло — так уж устроен сайт ( да и большинство сайтов в инете ). Мне даже пофиг будет ли мыло настоящее :)
Человек хочет авторизоваться на сайте. Он может это сделать вручную введя вся данные, подтвердив мыло и так далее. Либо подтвердив свои данные через сторонний сервис в два клика.
Проблема в том что мне надо знать 1. Имя 2. Мыло — так уж устроен сайт ( да и большинство сайтов в инете ). Мне даже пофиг будет ли мыло настоящее :)
записывайте к себе в базу email для пользователей, которые авторизуются через вконтакт, например: id@vkontakte.ru. Ну а на будущее — у каждого пользователя вконтакте будет свой email вида: nickname@vkontakte.ru. Думаю nickname можно будет узнать через api.
Facebook например предоставляет «кому попало» и е-мейл и даже место жительства, конечно же из соглашения пользователя для каждого отдельного веб-сайта
Ну, фактически, вы получаете доступ к id пользователя, что (после приложения минимума усилий) позволяет вам связаться с ним прямо на vkontakte.
После входа пользователя вконтакте перекидываем его на отдельную страницу (в моем случае это vk.php), где проверяем, зарегистрирован ли уже пользователь с таким vk_id. Если нет — показываем ему упрощенную форму регистрации (например, только логин и email). После чего создаем пользователя и перекидываем только что зарегистрированного посетителя на главную страницу.
Достаточно большая вероятность того, что введенный e-mail совпадет с контактовским. Я бы сказал о 80-90 процентах. Впрочем это имхо.
программными методами с вашей стороны есть возможность реализовать слияние двух акканутов на вашем сайте ( вконтакте + пользователь вашего сайта ), если это один пользователь. Плюс возможность из личного кабинета пользователя привязать аккаунт вконтакте и авторизоваться в последующем через него. Главное — каким образом вы реализуете удобные и понятные для пользователя интерфейсы взаимодействия с вконтактом.
Поддерживаю насчёт документации. Не сразу въехал что к чему и тоже смог разобраться только по сайту durov.at
а можно обойтись как то без создания приложения? и вообще чего там за приложение надо? уж больно геморойно это всё =( а сделать надо
Приложение создать придется в любом случае, сделать это можно здесь: vkontakte.ru/apps.php?act=add&site=1
В целом — ничего сложного. Заполняете адрес сайта, получается id и password и заменяете ими те, что указаны в моем коде.
В целом — ничего сложного. Заполняете адрес сайта, получается id и password и заменяете ими те, что указаны в моем коде.
наверно чего то не так делаю: Open API security breach =((
Это вы уже с собственным приложением?
Если да, то вот тут еще нужно поменять ID: github.com/Kolger/open-api/blob/master/lib/login_form.html, заменить «apiId: 1868779,» на ваш apiId.
Если да, то вот тут еще нужно поменять ID: github.com/Kolger/open-api/blob/master/lib/login_form.html, заменить «apiId: 1868779,» на ваш apiId.
Эта ошибка возникает, когда заданный в настройках URL отличается от фактического.
Приложение нужно для того, чтобы вы приняли условия соглашения от ВКонтакте. В частности, на сайтах, на которых используется вход через контакт, нельзя пользоваться никакой платежной системой, кроме контактовской.
Надеюсь, они поменяют такое нелепое правило.
Думаю, что для них это не нелепое правило, а основная причина, по которой стали городить весь этот огород с OpenAPI и не реализовали стандартный OpenID. Буду рад, если ошибаюсь. Но ни одной другой разумной причины найти не могу.
М-м-м…
define ('VK_APP_ID', 'vk_app_1868779');
define ('VK_APP_PASSWORD', 'q2L3DWlLse0Wtah6nMTR');
А мож не стоит так вот делать, особенно в репозитории?
define ('VK_APP_ID', 'vk_app_1868779');
define ('VK_APP_PASSWORD', 'q2L3DWlLse0Wtah6nMTR');
А мож не стоит так вот делать, особенно в репозитории?
Это специальное приложение, которое я сделал именно для этого примера.
Приложение это настроено на URL openapi.lc, дабы упростить процесс настройки примера.
Приложение это настроено на URL openapi.lc, дабы упростить процесс настройки примера.
Думаю, это надо было засунуть в конструктор Auth_Vkontakte. Заодно и в примере было бы сразу видно, куда втыкать ИД и Пароль аппсы.
Также, если вы хотите вдальнейшем сделать из этого библиотеку, я бы порекомендовал убрать
public function render_login_form() {
return file_get_contents(«lib/login_form.html»);
}
Как-то уж совсем нехорошо. По сути ПХП только проверяет, залогинен пользователь или нет, а логин сам по себе происходит через хтмл форму. Для примера сойдет и так, хотя если будет отдельная библиотека, то как выглядит хтмл форма — уже не ее дело =)
Также, если вы хотите вдальнейшем сделать из этого библиотеку, я бы порекомендовал убрать
public function render_login_form() {
return file_get_contents(«lib/login_form.html»);
}
Как-то уж совсем нехорошо. По сути ПХП только проверяет, залогинен пользователь или нет, а логин сам по себе происходит через хтмл форму. Для примера сойдет и так, хотя если будет отдельная библиотека, то как выглядит хтмл форма — уже не ее дело =)
Самое сложное в этом вопросе — распознать оригинальную форму Контакта от подложки для кражи паролей. Потому как они тем самым открыли мегабрешь в безопастности. Я бы сказал, из стен укреплений, деликатно отодвинули 2 из 4-х. Две оставшиеся — для лохов.
Пользователей gmail в разы больше, чем вконтакта, однако они не торопятся авторизоваться на моем болге через свой мэйл. Вопрос доверия к ресурсу, а не удобстве пользования.
И чем их OpenID не устроил? Городят свою проприетарщину (еще Open API называют, вот в каком извините месте оно Open?), как будто пытаются завязать весь Интернет на себе. Не получится это у VKontakte, максимум что выйдет — отгородиться от Интернета толстой стенкой из пуленепробиваемых велосипедов.
Или может я просто чего-то не понимаю?..
Или может я просто чего-то не понимаю?..
OpenID это для аутентификации, а Open API для авторизации, но люди заодно используют это и как средство для аутентификации. Различается это всё тем что по идее после авторизации по Open API вы разрешаете сайту творить с вашим эккаунтом определённые действия, например изменять статус за вас или ещё какие то действия. Здесь больше уместно сравнение с технологией OAuth, чем с OpenID.
Но то что у них велосипед… Я бы не сказал, велосипед сделал FaceBook у которого они его и взяли, так что получается они не городили своё, а взяли уже готовую вещь (теоретически готовую).
Но то что у них велосипед… Я бы не сказал, велосипед сделал FaceBook у которого они его и взяли, так что получается они не городили своё, а взяли уже готовую вещь (теоретически готовую).
Это сделано для того, чтобы каждый сайт, который подключает вход через vkontakte, согласовывал это действие с vkontakte. В процессе согласования на сайты накладываются некоторые ограничение: например, нельзя использовать сторонние платежные системы, можно только контактовскую. Т.е. если у вас прикручена робокасса или WebMoney, то вход через vkontakte вам не сделать (или сделать, но потом по правилам приложение отрубят и это будет epic fail — пользователи потеряют возможность входить в свои аккаунты). Можно еще сказать так: если у вас прикручен вход через вконтакте, то платежи через WebMoney в дальнейшем принимать на сайте будет нельзя, можно будет только через их собственную платежную систему. В случае OpenID так ограничить сайтовладельцев сложно.
habrahabr.ru/blogs/social_networks/92523/
habrahabr.ru/blogs/social_networks/92523/
Спасибо, всё работает! про мордокнигу конечно же пишите!
Я так понял, приложение одобрять не обязательно?
eien.farm.lv
Вот настроенное приложение… Это если лень или не охота настраивать просто чтобы глянуть.
* Также заметил глюк: если не было куки для авторизации, то после ввода всех данных, в первый раз возвращает Auth error — но если нажать заново на кнопку (войти Вконтакте), тогда все в порядке, с чем это связано?
PS. Юзаю хром, также, чтобы проверить глюк можно использовать режим «инкогнито» в Вашем браузере.
Вот настроенное приложение… Это если лень или не охота настраивать просто чтобы глянуть.
* Также заметил глюк: если не было куки для авторизации, то после ввода всех данных, в первый раз возвращает Auth error — но если нажать заново на кнопку (войти Вконтакте), тогда все в порядке, с чем это связано?
PS. Юзаю хром, также, чтобы проверить глюк можно использовать режим «инкогнито» в Вашем браузере.
сделал бы кто-нибудь плагин к wordpress для авторизации/возможности оставления комментариев под id вконтакте. полезная вещь была бы тоже, я думаю.
Если добрый системный администратор закроет в корпоративной сети доступ к Контакту, то офисные работники не смогут получить доступ к сервисам Вашего сайта… ))) Так что у этой медали далеко не одна сторона…
Да, документация Вконтакте оставляет желать…… документации. Что же касается Facebook Connect — то у этих ребят, к счастью, документация на высоте — сложно остаться в неведении. Но статейка на хабре будет не лишней, опыт никогда не бывает лишним.
Как раз недавно бранился на «доки» ихние. Благодарю за разъяснения. =)
Подобное описание FB Connect тоже не помешает, ибо в рунете практически ничего толкового на эту тему нет.
Подобное описание FB Connect тоже не помешает, ибо в рунете практически ничего толкового на эту тему нет.
Ещё стоит упомянуть про особенность параметра nameTransportPath. Пару часов убил на то, чтобы определить почему авторизация не работает и какие значения он кушает, а какие нет.
Авторизация работает, только если в нем указан relative path!
Т.е ни «xd_receiver.htm», ни «httр://domain.com/vk/xd_receiver.htm» не прокатывает. Только "/vk/xd_receiver.htm".
В php лечится миксом из функций parse_url() и pathinfo() в случае, если домен-каталог веб-приложения задаётся через конфиги.
Авторизация работает, только если в нем указан relative path!
Т.е ни «xd_receiver.htm», ни «httр://domain.com/vk/xd_receiver.htm» не прокатывает. Только "/vk/xd_receiver.htm".
В php лечится миксом из функций parse_url() и pathinfo() в случае, если домен-каталог веб-приложения задаётся через конфиги.
Огромное спасибо за пример.
А Open API можно добавить к текущему рабочему приложению или надо создавать новое? Я бы не спрашивал, но что-то при тестовых попытках это сделать всё работает через раз.
А Open API можно добавить к текущему рабочему приложению или надо создавать новое? Я бы не спрашивал, но что-то при тестовых попытках это сделать всё работает через раз.
Полностью согласен с автором! Сам с этим столкнулся!
Прицепил регистрацию через Open API на сайт. Скрипты асинхронные. В опере через раз JS выбивает такую ошибку
i10.fastpic.ru/big/2010/0926/8e/c4e71ec2f725c...
т.е. не может обратиться к какой-то защищенной переменной «closed».
То сразу выбивает и не входит. То пару раз нормально, на третий раз ошибка. Замечано только в Опере на разных компах. С чем это может быть связано?
i10.fastpic.ru/big/2010/0926/8e/c4e71ec2f725c...
т.е. не может обратиться к какой-то защищенной переменной «closed».
То сразу выбивает и не входит. То пару раз нормально, на третий раз ошибка. Замечано только в Опере на разных компах. С чем это может быть связано?
Сорри, вот ссылка на ошибку
i10.fastpic.ru/big/2010/0926/8e/c4e71ec2f725c69e6abbf6dbee067f8e.gif
i10.fastpic.ru/big/2010/0926/8e/c4e71ec2f725c69e6abbf6dbee067f8e.gif
Проблему не решил, но обошел JS-таймером.
Не известно, как скоро появится нормальная система авторизации для сайтов от Вконтакте?
Работал работал, да в последние недели чтото перестал работать скрипт этот(
По этому алгоритму хакер может авторизоваться на Вашем сайте под любым пользователем просто зная его ID в контакте (публичен) и подделав данные в запросе авторизации на Ваш сервер.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Авторизация через ВКонтакте