Как завершить сеанс в вк: Как выйти со всех устройств ВКонтакте

Как выйти из ВКонтакте?

Когда необходимо выходить из своего аккаунта в ВК? Например, если вы хотите зайти на сайт под другим своим профилем или, скажем, пришли в гости к своим друзьям и решили зайти на сайт под своим именем, а для того, что бы больше никто не смог зайти ним, нужно обязательно выйти из аккаунта. Сегодня мы поговорим о том, как это сделать в самых различных ситуациях.

Вряд ли вы не знаете, что для того, что бы выйти из аккаунта на компьютере, нужно нажать на кнопочку «Выйти», что расположена в правой верхней части экрана. Выглядит она вот таким образом:

Часто проблема заключается в том, что, нажав на эту кнопку, вообще ничего не происходит, в результате чего пользователь не понимает, что ему необходимо сделать. Действительно, такая проблема существует, причем не только ВКонтакте, но и ряде других интернет-проектов. С чем это связано, сказать сложно, поскольку нужно рассматривать каждый случай отдельно, но в любом случае проблема кроется в браузере, а потому мы расскажем о том, как решить данный вопрос.

Есть два способа. Так, вы можете попросту воспользоваться другим браузером для входа в еще один свой аккаунт. А вот если вы хотите использовать только этот браузер, тогда желательно почистить куки и кэш. Как это сделать? Очень просто: нажмите на клавиши CTRL+SHIFT+DELETE и откроется окно (этот способ работает для Google Chrome и Mozilla Firefox, вероятно, работает и для Opera). Поставьте галочки напротив пунктов «Кэш» и «Куки», а в верхней части окна выберите «Все». Затем нажмите «Удалить сейчас» и подождите, пока будут удалены все данные, это может занять некоторое время. Обратите внимание, что в этом случае происходит деавторизация во всех аккаунтах, где вы прежде прошли авторизацию. После данной процедуры проблем с выходом из аккаунта ВК быть не должно.

Как выйти из ВК на всех устройствах сразу?

Этот способ подойдет тем пользователям, которые могли заметить подозрительную активность в своем аккаунте. Например, посторонний ip-адрес. В таком случае нужно не только завершить сеанс на всех устройствах, но и поменять пароль в аккаунте.

Что бы завершить все сеансы, зайдите в «Мои настройки».

Выберите вкладку «Безопасность» и пункт «История активности».

Здесь вы увидите ссылку «Завершить все сеансы», на которую вам и следует нажать. В таком случае произойдет выход из аккаунта на все устройствах, кроме того, что вы используете сейчас.

Нажав на ссылку «Показать историю активности», вы сможете увидеть, когда вы (или злоумышленник) заходили в аккаунт и с какого ip-адреса.

Как выйти из ВКонтакте на планшете или телефоне (Android, iOS)?

Если вы используете мобильное устройство на базе операционной системы Андроид или iOS, значит, вы наверняка пользуетесь мобильным приложением ВК. Выйти из него проще простого.

В первую очередь заходим в «Настройки».

В нижней части открывшейся страницы видим кнопку «Выйти». Нажимаем на нее и происходит деавторизация.

Собственно, на этом весь процесс окончен.

После логаута пользователя VK можно получить управление его страницей / Хабр

Решил попробовать себя в работе с API Вконтакте и наткнулся на интересную особенность.

Один из способов авторизации в API — это OAuth. Вкратце всё происходит так: создаёте приложение ВК, получаете его ID, а затем отправляете браузер пользователя на адрес:

				https://oauth.vk.com/authorize"
					+ "?client_id=123"    // ID вашего приложения
					+ "&display=page"
					+ "&redirect_uri=https://oauth.vk.com/blank.html"    // URL, на который попадёт пользователь после успешной авторизации. ВК требует указания этого сайта в настройках приложения и только для приложения типа Сайт. Для остальных работает только указанный УРЛ, в целях безопасности
					+ "&scope= права доступа"
					+ "&response_type=token"
					+ "&v=5.52"
					+ "&state=123456"


Это авторизация методом Implicit flow.

Если пользователь залогинен, ему будет сразу предложено установить приложение, если нет — вначале залогиниться, а уже потом устанавливать. Если приложение уже установлено, то идёт сразу переход на страницу, в хэше которой будет токен. Дальше идёт работа с API.


Самое интересное начинается после выхода из ВК. Ваше приложение может иметь ссылку на выход вида vk.com/login.php?op=logout. Это стандартная ссылка на выход из VK. Но после выхода пользователя из VK куки остаются рабочими.

Таким образом, если опять показать страницу авторизации, ввести совершенно другой логин и пароль — вы всё равно сможете пользоваться страницей первого пользователя.

Т.е. работа ведётся следующим образом — пользователь П1 авторизуется ВКонтакте через приложение. В приведённом примере я использую standalone-приложение, но, возможно, получится и с другими видами приложений. Дальше пользователь П1 нажимает на ссылку выхода из ВК, приведённую выше. После этого ни через браузер, ни через приложение зайти в ВК без авторизации не получится. Дальше пользователь П2 авторизуется через приложение. Затем, уже через браузер пользователь попадает на страницу пользователя П1, вместо своей страницы П2. И может делать с этой страницей абсолютно всё, что угодно, приложение на данном этапе уже не нужно и не играет никакой роли.

Самое смешное то, что вы можете использовать в вашем приложении самые безобидные права. То есть не нужно пугать пользователя тем, что вы просите доступ к фоткам, аудио, видео, сообщениям и всему остальному. Можно оставить только базовые — и всё. Куки при этом всё равно будет полностью рабочими, используя их вы попадёте прямиком на страницу пользователя.

Можно ли считать данную особенность уязвимостью — думайте сами. По-моему, это как минимум не то, чего ожидает пользователь, нажимая на кнопку «Выход» и надеясь на то, что теперь уж его страница в безопасности.

При написании данной заметки ни один пользователь ВК не пострадал.

UPD. При авторизации использовался браузер IE7.

В поддержку я писал задолго до того, как опубликовал статью на здесь. Собственно, публикация статьи здесь и произошла в результате того, что поддержка данный сигнал проигнорировала в духе «это не баг, а фича, но, возможно, что-то изменится в будущем».

Пакет

vk — github.com/markbates/goth/providers/vk — Пакеты Go

Пакет vk реализует протокол OAuth3 для аутентификации пользователей через vk.com.
Этот пакет можно использовать в качестве эталонной реализации поставщика OAuth3 для Goth.

  • введите Провайдер
    • func New (clientKey, секрет, строка callbackURL, области действия … строка) * Provider
    • func (p *Provider) BeginAuth(строка состояния) (goth.Session, ошибка)
    • func (p *Provider) Client() *http.Client
    • func (p *Provider) Debug (bool отладки)
    • func (p *Provider) FetchUser(session goth.Session) (goth.User, ошибка)
    • func (p *Provider) Name() строка
    • func (p *Provider) RefreshToken (строка RefreshToken) (*oauth3. Token, ошибка)
    • func (p *Provider) RefreshTokenAvailable() bool
    • func (p *Provider) SetName(строка имени)
    • func (p *Provider) UnmarshalSession (строка данных) (goth.Session, ошибка)
  • тип Сессия
    • func (s *Session) Authorize(provider goth.Provider, params goth.Params) (строка, ошибка)
    • func (s *Session) GetAuthURL() (строка, ошибка)
    • func (s *Session) Marshal() строка

Этот раздел пуст.

Этот раздел пуст.

Этот раздел пуст.

 тип Структура поставщика {
Строка ClientKey
Секретная строка
Строка обратного URL-адреса
HTTP-клиент *http.Client
// содержит отфильтрованные или неэкспортированные поля
} 

Provider — это реализация goth.Provider для доступа к Github.

 func New(clientKey, secret, callbackURL string, scopes ...string) *Provider 

New создает нового провайдера ВКонтакте и устанавливает важные детали подключения.
Вы всегда должны вызывать `vk.New`, чтобы получить нового провайдера. Никогда не пытайтесь
создать вручную.

 func (p *Provider) BeginAuth(строка состояния) (goth.Session, ошибка) 

BeginAuth запрашивает у VK конечную точку аутентификации.

 func (p *Provider) Client() *http.Client 
 func (p *Provider) Debug(bool отладки) 

Debug не работает для пакета vk.

 func (p *Provider) FetchUser(session goth.Session) (goth.User, error) 

FetchUser зайдет в ВК и получит доступ к основной информации о пользователе.

 func (p *Provider) Name() строка 

Имя — это имя, используемое для последующего получения этого провайдера.

 func (p *Provider) RefreshToken (строка RefreshToken) (*oauth3.Token, ошибка) 

Токен обновления RefreshToken не предоставляется vk

 func (p *Provider) RefreshTokenAvailable() bool 

RefreshTokenAvailable токен обновления не предоставляется vk

 func (p *Provider) SetName(строка имени) 

SetName для обновления имени провайдера (необходимо в случае нескольких провайдеров 1 типа)

 func (p *Provider) UnmarshalSession(строка данных) (goth. Session, ошибка) 

UnmarshalSession разместит строку JSON в сеанс.

 тип Структура сеанса {
Строка AuthURL
Строка AccessToken
ExpiresAt time.Time
// содержит отфильтрованные или неэкспортированные поля
} 

Сессия сохраняет данные в процессе авторизации в ВК.

 func (s *Session) Authorize(provider goth.Provider, params goth.Params) (string, error) 

Авторизовать сессию через VK и вернуть токен доступа для сохранения для будущего использования.

 func (s *Session) GetAuthURL() (строка, ошибка) 

GetAuthURL возвращает URL конечной точки аутентификации для провайдера.

 func (s *Session) Marshal() string 

Маршалировать сеанс в строку

Rails omniauth и разработка проблем с vk

Я собираюсь реализовать вход (регистрацию) в facebook и vkontakte для моего приложения rails, и с facebook все в порядке (вход и регистрация в порядке), сделано как в руководстве
вот

А вот с вконтакте что-то не так, у меня все равно получается «пустая» страница

вот мой код:

 class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
  деф фейсбук
    # Вам необходимо реализовать метод ниже в вашей модели (например, app/models/user. rb)
    @user = User.find_for_facebook_oauth(request.env["omniauth.auth"], текущий_пользователь)
    если @user.persisted?
      flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => "Facebook"
      sign_in_and_redirect @user, :event => :authentication
    еще
      сеанс["devise.facebook_data"] = request.env["omniauth.auth"]
      redirect_to new_user_registration_url
    конец
  конец
  деф вконтакте
    @user = User.find_for_vkontakte_oauth(request.env["omniauth.auth"], текущий_пользователь)
    если @user.persisted?
      flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => "ВКонтакте"
      sign_in_and_redirect @user, :event => :authentication
    еще
      session["devise.vkontakte_data"] = request.env["omniauth.auth"]
      redirect_to new_user_registration_url
    конец
  конец
конец
 

И модель:

 класс Пользователь < ActiveRecord::Base
 # Включить модули разработки по умолчанию. Другие доступные:
 разработать :database_authenticable, :registerable,
 :восстанавливаемые, :запоминаемые, :отслеживаемые, :проверяемые,
 :token_authenticable, :lockable, :timeoutable, :omniauthable #:подтверждаемый,
 # Настройте доступные (или защищенные) атрибуты для вашей модели
 attr_accessible :email, :password, :password_confirmation, :remember_me, :provider, :uid, :name
def self. find_for_facebook_oauth (аутентификация, signed_in_resource = ноль)
пользователь = User.where(:provider => auth.provider, :uid => auth.uid).first
если пользователь
пользователь = User.create(имя:auth.extra.raw_info.name,
провайдер: auth.provider,
идентификатор: auth.uid,
электронная почта: auth.info.email,
пароль: Devise.friendly_token[0,20]
)
конец
пользователь
конец
def self.new_with_session (параметры, сеанс)
super.tap сделать |пользователь|
if data = session["devise.facebook_data"] && session["devise.facebook_data"]["extra"]["raw_info"]
user.email = data["email"] если user.email.blank?
конец
if data = session["devise.vkontakte_data"] && session["devise.vkontakte_data"]["extra"]["raw_info"]
user.email = data["email"] если user.email.blank?
конец
конец
конец
def self.find_for_vkontakte_oauth(auth, signed_in_resource=nil)
пользователь = User.

This entry was posted in Популярное