Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Вход/регистрация через ВКонтакте(vk.com)
Для использования регистрации ВКонтакте:
- Войдите ВКонтакте под своей учётной записью.
- Откройте страницу Мои приложения (https://vk.com/apps?act=manage) и нажмите на кнопку Создать.
Заполняем название сайта, ссылку и домен.
После подтверждения создания приложения откроется страница с информацией о приложении.
В настройках приложения получаем ID приложения, секретный ключ (для открытия требует код из смс).
Доверенный redirect URI - это пути, на которые ВКонтакте разрешено перенаправлять пользователя в процессе авторизации. URI передается сети в процессе авторизации с вашего сайта. Эти пути, как правило, URL авторизации и redirect URI — одни и те же, например https://falconspace.ru/api/action/...
Далее можем получить непосредственно код для вставки в разметку страницы
https://dev.vk.com/widgets/auth - виджет авторизации на ВК.
Данный виджет добавляем на страницу сайта (важно, чтобы домен сайта был прописан в настройках приложения ВК).
В качестве ссылки для авторизации берем ссылку на метод входящего API Falcon Space
В качестве параметров данный метод получает:
- идентификатор пользователя
- имя
- фамилия
- URL фотографии профиля пользователя шириной 200px
- URL фотографии профиля пользователя шириной 50px
- hash-код для проверки авторизации как md5 от app_id+user_id+secret_key
Пример SQL-кода нашего метода API:
CREATE PROCEDURE [dbo].[api_vk_vkauth100]
@parameters ExtendedDictionaryParameter READONLY,
@username nvarchar(256)
as
begin
DECLARE @appID NVARCHAR(128) = N'_____________appID_________________'
DECLARE @secretKey NVARCHAR(128) = N'___________SECRET KEY________________'
-- идентификатор пользователя
DECLARE @vkUserID NVARCHAR(128) = ISNULL((SELECT TOP 1 Value2 FROM @parameters WHERE LOWER([Key]) = N'uid' ),N'')
-- имя
DECLARE @firstName NVARCHAR(128) = ISNULL((SELECT TOP 1 Value2 FROM @parameters WHERE LOWER([Key]) = N'first_name'),N'')
-- фамилия
DECLARE @lastName NVARCHAR(128) = ISNULL((SELECT TOP 1 Value2 FROM @parameters WHERE LOWER([Key]) = N'last_name' ),N'')
-- URL фотографии профиля пользователя шириной 200px
DECLARE @photo NVARCHAR(128) = ISNULL((SELECT TOP 1 Value2 FROM @parameters WHERE LOWER([Key]) = N'photo' ),N'')
-- URL фотографии профиля пользователя шириной 50px
DECLARE @photoMin NVARCHAR(128) = ISNULL((SELECT TOP 1 Value2 FROM @parameters WHERE LOWER([Key]) = N'photo_rec' ),N'')
DECLARE @hash NVARCHAR(512) = ISNULL((SELECT TOP 1 Value2 FROM @parameters WHERE LOWER([Key]) = N'hash' ),N'')
DECLARE @input NVARCHAR(MAX) = ISNULL((SELECT TOP 1 Value2 FROM @parameters WHERE LOWER([Key]) = N'inputstream'),N'')
-- @hash - Для проверки авторизации, сравнив его с md5 подписью от app_id+user_id+secret_key, например md5(667481942537fTanpCrNSeuGPbA4ENCo)
SET @hash = LOWER(@hash);
DECLARE @myHash NVARCHAR(512) = LOWER(dbo.as_md5(@appID + @vkUserID + @secretKey));
IF @vkUserID = N'' BEGIN
SELECT 0 [Result], N'Идентификатор пользователя ВКонтакте не может быть равным нулю' Msg
RETURN
END
IF @hash <> @myHash BEGIN
SELECT 0 [Result], N'Не совпали контрольные суммы' Msg
RETURN
END
DECLARE @user NVARCHAR(256) = N'vk' + @vkUserID;
DECLARE @msg NVARCHAR(MAX) = N''
declare @userExist bit = 0
IF EXISTS(SELECT TOP 1 id FROM as_users WHERE username = @user) BEGIN
set @userExist = 1
END
-- SELECT 1 - вывод метаданных о результате операции метода API
SELECT @msg Msg, 1 [Result], 0 errorCode, N'/cabinet' RedirectUrl
-- SELECT 2 - вывод самих данных в API (в случае проблем проверьте что этот запрос приходит непустой)
SELECT 2
-- SELECT 3 Вызов внешних действий
if(@userExist = 1) begin
SELECT N'authcookie' [type], @user username, 1 persist
end else begin
select 'user.createuser' type, @user username, convert(nvarchar(36), newid()) password, @vkUserID name,
convert(nvarchar(36), newid())+ '@mail.ru' email, '' phone,
cast(1 as bit) isApproved, 'client' roles, 'afterCreateClient' spCallback, 1 hideAuth
end
end
В процедуре используем appID и секретный ключ для проверки запросов через хеш MD5.
Если запрос валидный, то проверяем наличие пользователя. Если он есть то авторизуем его. Если нету, то создаем его (в данном случае с ролью client).
В процедуре sql callback для создания пользователя создаем дополнительные объекты, а также прозрачно авторизуем пользователя.
CREATE PROCEDURE [dbo].[outer_afterCreateClient]
@parameters ExtendedDictionaryParameter readonly,
@data nvarchar(128) = '',
@username nvarchar(128) = ''
AS
BEGIN
declare @user nvarchar(256), @password nvarchar(256), @name nvarchar(128), @email nvarchar(128), @phone nvarchar(128)
@result bit, @msg nvarchar(max), @hideAuth nvarchar(128)
select @user =Value2 from @parameters where [Key]= 'username'
select @password =Value2 from @parameters where [Key]= 'password'
select @name =Value2 from @parameters where [Key]= 'name'
select @email =Value2 from @parameters where [Key]= 'email'
select @phone =Value2 from @parameters where [Key]= 'phone'
select @hideAuth =Value2 from @parameters where [Key]= 'hideAuth'
select @result = try_cast(Value2 as bit) from @parameters where [Key]= 'result'
select @msg =Value2 from @parameters where [Key]= 'msg'
if(@result = 0 ) begin
select @result Result, @msg Msg
return
end
if(isnull(@user, '')='') begin
select 0 Result, 'Empty username' Msg
return
end
-- создаем здесь объекты для пользователя ... .....
-- SELECT 1 ReesultModel
select 1 Result, @msgText Msg
declare @outers table(type nvarchar(max),
username nvarchar(max), persist int)
-- SELECT 2 Вызов внешнего действия
if(@hideAuth='1') begin
insert into @outers
select 'authcookie' type, @user, 1
end
select * from @outers
END
В итоге пользователь может через подтверждение в виджете зайти в личный кабинет. Если у него не было еще пользователя, то он будет создан (на основе его VK ID).
Google поиск по нашей документации
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта