Как авторизоваться в vk api

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

Многоплатформенность — это способность программы работать под управлением различных операционных систем.

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

Алгоритм авторизации через социальную сеть.

Для начала я бы хотел, чтобы вы поняли, как происходит авторизация через социальную сеть. Алгоритм достаточно прост.

  • Пользователь нажимает кнопочку «Авторизация через социальную сеть»;
  • Подтверждает доступ к данным своей страницы;
  • Программа получает данные и обрабатывает их.

В нашем примере авторизация будет проходить в три этапа. В первую очередь мы будем вызывать браузер. Браузер будет загружать нужную нам страницу на сервере. после прохождения авторизации Unity получит эти данные и с ними можно делать всё что угодно (сохранить локально или же отправить в базу данных на сервер).

VK API [PHP Devel Studio] [Урок #1] — Авторизация Пользователя (Получение Токена)

И так, преступим.

Встраиваем нативный браузер.

Здесь всё просто, можно пойти трудным путём и создать собственный плагин для Unity или же посмотреть, что есть в AssetStore. Я как самый ленивый человек на планете выбираю достаточно простое решение и иду в AssetStore.

Из всего перечня что был в магазине, я выбрал In App Web Browser. Его стоимость составляет 5$. Но мир не без хороших людей, поэтому его можно свободно найти в сети. Покупать или пиратить решать вам, лично я за то, чтобы купить.

Вконтакте - InAppBrowser

Как заявляет разработчик данное чуда работает и на Android и на IOS. Я же лично проверил работу только на Android.

После того как вы импортируете unitypackage то в Project’е увидите нечто следующее:

Вконтакте - Unitypackege

В плагине есть несколько демо-сцен а так же документация по данному браузеру.

Следующим шагом станет выбор сервера. Объясню для чего это нужно. Поскольку Unity Вконтакте это социальная сеть и находиться она непосредственно на удалённых серверах, нам необходимо будет обрабатывать некоторые запросы в php файле, то есть на сервере.

Здесь можно выбрать абсолютно любой бесплатный хостинг, который существует в интернете, я же выбрал вот этот: 000webhost.

Вконтакте - Server

VK API Урок авторизация на сайте через вконтакте апи

После того как проходите авторизацию/регистрацию и получаете доступ к FTP, можно переходить к следующему пункту.

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

Делаем регистрацию в игре через социальную сеть ВКонтакте.

Для начала перейдём на сцену «ExampleJavaScriptCommunicationScene», которая находиться в плагине.

Вконтакте - CreateButton

Данная сцена содержит в себе две кнопки открыть браузер и очистить кэш. Скрипт, который обрабатывает открытие браузера и загрузку страницы, скрипт, который обрабатывает event события нативного браузера, в данном случае ответ от страницы и скрипт, который собственно принимает эти самые ответы.

Еще по теме:  Привет от команды рекрутмента vk

Создадим свой собственный скрипт, я назову его SocialManager. Суть данного скрипта будет заключаться в том, чтобы открыть браузер с нужной нам страницей и нужными нам настройками браузера, которые вы можете посмотреть в документации.

using System.Collections; using System.Collections.Generic; using UnityEngine; public class SocialManager : MonoBehaviour < [Header(«Настройки для авторизации Вконтакте»)] [SerializeField] private string vkID = «6663517»; // ID приложения (указываете своё) [SerializeField] private string vkRedirectURL = «https://landaxer.000webhostapp.com/social/vk/vk.php»; // ссылка на перенаправленную страницу [Header(«Настройки для браузера»)] [SerializeField] private bool displayURLAsPageTitle = false; [SerializeField] private string pageTitle = «Авторизация»; [SerializeField] private string barBackgroundColor = «#FF2C2C»; [SerializeField] private string textColor = «#FFFFFF»; private string urlLogin = «»; private InAppBrowser.DisplayOptions optionsBrowser; void Start () < // собираем ссылку для авторизации в вк urlLogin = «https://oauth.vk.com/authorize?client_id=» + vkID + «redirect_uri=» + vkRedirectURL + «v=5.52»; optionsBrowser = new InAppBrowser.DisplayOptions(); optionsBrowser.displayURLAsPageTitle = displayURLAsPageTitle; optionsBrowser.pageTitle = pageTitle; optionsBrowser.barBackgroundColor = barBackgroundColor; optionsBrowser.textColor = textColor; >public void OnVKontakte() < InAppBrowser.OpenURL(urlLogin, optionsBrowser); >>

Разберёмся что здесь происходит. В первую очередь мы задаём ID приложения в контакте, как это сделать, описано ниже. Далее задаётся переменная, в которой указана ссылка на страницу, на которую будет перенаправлен наш пользователь после успешной авторизации. Эта самая страница и вернёт там ответ в Unity.

Следующие переменные необходимы для настройки браузера:

  • displayURLAsPageTitle — отображение адреса загружаемой страницы
  • pageTitle — название браузера
  • barBackgroundColor — фон верхней панели у браузера
  • textColor — цвет текста в верхней панели браузера
  • urlLogin — переменная для хранения адреса, который будет открываться в нативном браузере.

Далее функция старта. В ней собирается строка авторизации, состоящая из постоянной страницы и параметров ID приложения и ссылки перенаправления. Так же здесь происходит применение настроек для браузера.

Функция OnVKontakte вызывает нативыный браузер и открывает в нём страницу авторизации в социальной сети Вконтакте.

Перейдём к настройке сцены.

Вконтакте - SettingButton

На сцене существует кнопка, изображение, и текст. В изображение у нас будет загружаться фотография профиля, в текст имя и фамилия пользователя, а кнопка будет вызывать открытие браузера. Не забудьте указать для кнопки на событие нажатия метод OnVKontakte() из скрипта SocialManager.

Создание приложение ВКонтакте.

На тему как создать приложение в контакте существует невероятно огромное количество статей и методов, но, чтобы вам не отвлекаться от чтения данной статьи, расскажу вам как это делается.

Необходимо перейти по ссылке: API VK

Далее перейти в пункт «Мои приложения».

Вконтакте - My Application

Далее «Создать новое приложение».

Вконтакте - CreateMyApplication

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

Вконтакте - SettingMyApplication

Подтверждаем создание приложения путём подтверждения через смс.

Вконтакте - PhoneMyApplication

Вводим пришедший код на телефон.

Вконтакте - PhoneMyApplication

И наше тестовое приложение создано.

Вконтакте - SettingMyApplication2

Теперь нужно перейти в «Настройки» и записать на листочек некоторое параметры, которые нам понадобятся в последующем. Записываем или запоминаем ID приложения, а также Защищённый ключ. не забудьте в Unity указать ID приложения.

Для полной работы авторизации осталось сделать несколько шагов.

Пишем скрипт для обработки данных Вконтакте.

Открываем любой редактор, позволяющий работать с текстовыми файлами. И прописываем следующий код:

Не забудьте указать $appID, $redirectURL, $appSecret иначе ничего не будет работать. Немного разберёмся что здесь происходит. Первым делом мы получаем токен и код от страницы пользователя который проходит авторизацию, после чего происходит получение нужных нам данных. И последним шагом становиться отправка этих самых данных обратно в приложение.

Не забудьте залить скрипт на сервер и указать на него ссылку в приложении.

Еще по теме:  Как прочитать переписку в ВК другого человека

Возвращаемся к приложению и пишем ещё один скрипт, который будет принимать данные от php скрипта. Я назову его JSExecute.

Код данного крипта:

using UnityEngine; using System.Collections; using Network.Helpers; using UnityEngine.UI; using Social.Entites; using System.Collections.Generic; public class JSExecute : MonoBehaviour < void Start() < InAppBrowserBridge bridge = FindObjectOfType(); bridge.onJSCallback.AddListener(OnMessageFromJS); > void OnMessageFromJS(string jsMessage) < Debug.Log(jsMessage); >>

JSExecute необходимо разместить следующим образом:

Вконтакте - JSMessage

Если вы всё правильно сделали, то после того как сбилдите и запустите приложение, по нажатию на кнопку у вас откроется нативный браузер и попросит вас авторизоваться Вконтакте для приложения. После того как авторизация будет пройдена. В функцию OnMessageFromJS вернётся Json данных. Который отобразиться в console Unity. Если же у вас что-то не получилось, рекомендую вам перейти к началу статьи =)

Автор статьи: Александр Каримов.

Источник: you-hands.ru

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Cancel Create

vk-io / docs / ru / api-reference / auth.md

  • Go to file T
  • Go to line L
  • Copy path
  • Copy permalink

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Cannot retrieve contributors at this time
242 lines (174 sloc) 7.06 KB

  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents Copy raw contents

Copy raw contents

const auth > = vk;

Основные поддерживаемые типы по логину и паролю:

  • Direct
  • Implicit Flow
  • Implicit Flow User
  • implicit Flow Groups

При подтверждении номера телефона пользователя приоритетным будет свойство phone

Если на аккаунте активирована двух факторная авторизация нужно поставить соответствующий обработчик через vk.setTwoFactorHandler()

Если авторизация будет слишком частой, то скорее всего будет требоваться капча, поставить её можно через обработчик vk.setCaptchaHandler()

Прямая авторизация по логину и паролю с указанием appId и appSecret в опциях

const direct = auth.direct(); // => DirectAuth
vk.setOptions( appId: process.env.APP_ID, appSecret: process.env.APP_SECRET, login: process.env.LOGIN, password: process.env.PASSWORD >); const direct = auth.direct(); direct.run() .then((response) => console.log(‘Token:’, response.token); console.log(‘Expires:’, response.expires); console.log(‘Email:’, response.email); console.log(‘User ID:’, response.user); >);

Так же присутствуют заданные приложения по умолчанию для прямой авторизации

Авторизация через официальное приложение android

const direct = auth.androidApp(); // => DirectAuth

Авторизация через официальное приложение windows

const direct = auth.windowsApp(); // => DirectAuth

Авторизация через официальное приложение windows phone

const direct = auth.windowsPhoneApp(); // => DirectAuth

Авторизация через официальное приложение iPhone

const direct = auth.iphoneApp(); // => DirectAuth

Авторизация через официальное приложение iPad

const direct = auth.ipadApp(); // => DirectAuth

Авторизация для Standalone приложений

Существует два типа авторизации Implicit Flow

  • Авторизация для пользователя
  • Авторизация для сообществ(а)

Implicit Flow User

Для авторизации пользователя нужно только идентификатор приложения

const implicitFlow = auth.implicitFlowUser(); // => ImplicitFlowUser
vk.setOptions( appId: process.env.APP, login: process.env.LOGIN, password: process.env.PASSWORD >); const implicitFlow = auth.implicitFlowUser(); implicitFlow.run() .then((response) => console.log(‘Token:’, response.token); console.log(‘Expires:’, response.expires); console.log(‘Email:’, response.email); console.log(‘User ID:’, response.user); >);

Implicit Flow Groups

Для авторизации пользователя нужно только идентификатор приложения

const implicitFlow = auth.implicitFlowGroups(groups); // => ImplicitFlowGroups

Параметр Тип Описание
groups Array Список групп

vk.setOptions( appId: process.env.APP, login: process.env.LOGIN, password: process.env.PASSWORD >); const implicitFlow = auth.implicitFlowGroups([groupIdOne [, . ]]); implicitFlow.run() .then((tokens) => for (const response of tokens) console.log(‘Group:’, response.group); console.log(‘Token:’, response.token); console.log(‘Expires:’, response.expires); > >);

Еще по теме:  Сбой загрузки страницы Опера что делать ВК

Проверяет что пользователь был авторизован через Open API, требует опцию appSecret

Подробнее в разделе авторизации Open API

auth.userAuthorizedThroughOpenAPI(params); // => Promise

Параметр Тип Описание
params Object Параметры

Возвращает объект со следующими свойствами

Свойство Тип Описание
authorized boolean Авторизовался ли пользователь через Open API

Как разобрать cookie вида vk_app_[APP_ID] в express (предполагается что у вас уже разобраны cookies):

const URLSearchParams > = require(‘url’); const APP_ID = ‘17071010’; app.get(‘/vk/valid-auth’, async (req, res, next) => const cookie = req.cookies[`vk_app_$APP_ID>`]; if (!cookie) res.status(502).json( message: ‘Cookie not set’, authorized: false >); return; > const params = >; for (const [key, value] of new URLSearchParams(cookie)) params[key] = value; > const authorized > = await auth.userAuthorizedThroughOpenAPI(params); res.status(200).json( authorized >); >);

Обработка ошибок авторизации

import AuthError, AuthErrorCode > from ‘vk-io’;

Список кодов ошибок в AuthErrorCode

Свойство Тип Описание
PAGE_BLOCKED string Страница заблокирована
INVALID_PHONE_NUMBER string Неправильный номер телефона
AUTHORIZATION_FAILED string Авторизация провалилась
FAILED_PASSED_CAPTCHA string Не удалось пройти капчу
FAILED_PASSED_TWO_FACTOR string Не удалось пройти двух факторную авторизацию

auth.implicitFlowUser().run() .catch((error) => if (error instanceof AuthError) if (error.code === AuthErrorCode.PAGE_BLOCKED) console.log(‘Страница заблокирована :c’); > > >)

Источник: github.com

Как авторизоваться в вк через консольное приложение на nodejs?

Читал мануалы по авторизации в вк, все сводится к тому, что пользователю предлагается перейти на домен https://oauth.vk.com/authorize где он вводит логин и пароль и потом идет перенаправление на сервер, где уже сохраняется полученный access_token. Вопрос в том, как реализовать это через консоль? Т.е. чтобы логин и пароль прописывался непосредственно в консоли. Ожидаемая работа приложения: 1) Пользователь вводит в консоль логин и пароль, 2) Данные отправляются в вк 3) В ответ отправляется токен для работы с методами vk api Наброски приложения на nodejs:

const https = require(‘https’); let url = ‘https://api.vk.com/method/users.get?client_id=6761494v=5.93’;// здесь как-то предать логин, пароль function doRequest(url) < https.get(url, (res) => < res.on(‘data’, (d) =>< //токен приходит здесь >); >).on(‘error’, (e) => < console.error(e); >); > doRequest(url);
Версия nodejs: 10.11.0
Отслеживать
задан 24 ноя 2018 в 11:19
476 5 5 серебряных знаков 14 14 бронзовых знаков
Не думаю что есть юзеры которые будут вводить в консольное приложение свои данные.
24 ноя 2018 в 11:24
24 ноя 2018 в 11:25

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Вообще, прямая авторизация ВКонтакте доступна только доверенным приложениям. (если интересно, подробнее можно почитать здесь)
Ниже написал небольшой пример авторизации и последующего вызова метода users.get с использованием логина и пароля.

P.S. В примере ниже используется авторизация через оф. приложение для Android, но я всё же настоятельно рекомендую не отходить от правил и договориться с поддержкой о предоставлении доступа к прямой авторизации Вашему приложению.

const request = require(‘request’); const USER_CREDENTIALS = < login: », password: » >const APP_ID = 2274003; const APP_SECRET = ‘hHbZxrka2uZ6jB1inYsH’; const AUTH_URL = `https://oauth.vk.com/token?grant_type=passwordclient_secret=$password=` + encodeURIComponent(USER_CREDENTIALS.password); const TEST_REQUEST = ‘https://api.vk.com/method/users.get?v=5.86 doRequest(AUTH_URL, (err, res) => < if (err) return console.log(err); const response = JSON.parse(res); if (response.error) // что-то пошло не так. return console.log(response.error); // expires — время до истечения жизни токена в секундах. const = response; doRequest(TEST_REQUEST + access_token, (err, response) => < if (err) return console.log(err); console.log(response); >); >); function doRequest(url, callback) < request(url, (err, response, body) =>< if (err) return callback(err); callback(null, body); >); >

Источник: ru.stackoverflow.com

Рейтинг
( Пока оценок нет )
Загрузка ...