Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Авторизация через ВКонтакте

Здравствуйте, форумчане. Бродил я по интернету, искал, пересмотрел кучу видео, но полезной информации 0. Проблема в следующем : у меня есть десктопное приложение, и я хочу для него сделать авторизацию через вк. Приложение создано, оно есть в вк, ID приложения есть. Строку, по которой нужно перенаправлять пользователя для данной авторизации я тоже нашел. Я делал так, создавал объект webBrowser (новая форма для этого всплывает), оно проходит авторизацию, то есть выбивает мне окошко ввода логин пароля, потом разрешение доступа к информации вконтакте, затем выводит следующее : "Пожалуйста, не копируйте данные из адресной строки для сторонних сайтов. Таким образом Вы можете потерять доступ к Вашему аккаунту." А дальше что делать, я понять не могу. Я пытался извлечь из браузера url после этого всего (ту, как я думал, заветную адресную строку), но оно имеет значение null. Как мне получить access token? Может быть кто-то писал приложения для ВК? МНе всего нужно получить ID, Имя пользователя, пол и т.п. К стенам всяким мне доступ не нужен. Буду признателен за подсказки или полезные ссылочки.

Добавлено через 15 минут
Нашёл как открыть стандартный браузер, и сделать всё там
C#
1
Process.Start("https://oauth.vk.com/authorize?client_id=5527856&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=friends&response_type=token&v=5.52");
Но как извлечь данные? Я вероятно делаю что-то не так
Так, как оказалось, все данные появились в адресной строке стандартного браузера Теперь, как извлечь URL из этого браузера? Ну а дальше дело не хитрое, пропарсить и поделом)

Добавлено через 2 часа 49 минут
Так-с, нашёл, люди пишут что нужно юзать UI Automation, но как его юзать - не пишут, может кто-то подскажет? Вопрос всё ещё актуален

Добавлено через 8 часов 51 минуту
Up.

Добавлено через 1 час 34 минуты
Решил проблему, всем спасибо
Ответ: Andrey_y,
C#
1
2
3
4
5
6
7
        //Открываем в новой форме браузер, и перебрасываем юзера на страничку аутентификации OAuth
        private void getAuthentication(object sender, EventArgs e)
        {
            VKOAuth vk = new VKOAuth(this);
            this.Enabled = false;
            vk.Show();
        }//Конец getAuthentication 
Это была кнопка "авторизироваться через ВК"

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public partial class VKOAuth : Form
    {
        string access;
        public VKOAuth()
        {
            InitializeComponent();
        }
        MainView Mview;
        public VKOAuth(MainView view)
        {
            InitializeComponent();
            Mview = view;
        }
 
        private void AuthLoad(object sender, EventArgs e)
        {  
            browser.Navigate("https://oauth.vk.com/authorize?client_id=*******&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=friends&response_type=token&v=5.52");
//Вместо звёздочек вставляем Ид своего приложения
        }
 
        private void WBNavigated(object sender, WebBrowserNavigatedEventArgs e)
        {
            access = browser.Url.ToString();
            if (access.Contains("access_token"))
            {
                Mview.token = access;
            }
        }
    }
а это код формы, в которой я открываю браузер, вот так я получаю Url в котором есть access_token и user_id
Вопрос: Авторизация через бд

Здравствуйте. У меня есть авторизация через БД, рабочая, но из-за кода(скорее всего) у меня не корректно отображается форма DBGrid. Скриншот как выглядит DBGrid()
код авторизации:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm1.Button1Click(Sender: TObject);
begin
  k:=0;
  ADOQueryaccounts.SQL.Clear;
  ADOQueryaccounts.SQL.Add('SELECT Пароль FROM Пользователь WHERE Имя='+#39+Edit1.Text+#39);
  ADOQueryaccounts.Open;
  if ADOQueryaccounts.IsEmpty then ShowMessage('Пользователь '+Edit1.Text+' не найден!') else
  if ADOQueryaccounts.FieldByName('Пароль').Value <> Edit2.Text then ShowMessage('Введен не верный пароль!') else
  begin
    Form2.Show;
    Form1.Visible:=false;
    k:=1;
  end;
end;
Ответ:
Delphi
1
2
3
4
5
6
7
8
9
10
11
k:=0;
  ADOQueryaccounts.SQL..Text:='SELECT Пароль FROM Пользователь WHERE Имя=:s';
  ADOQueryaccounts.params.parambyname('s').value:=Edit2.text;
  ADOQueryaccounts.Open;
  if ADOQueryaccounts.IsEmpty then ShowMessage('Пароль '+Edit2.Text+' не найден!') else
  if ADOQueryaccounts.FieldByName('Пароль').Value <> Edit2.Text then ShowMessage('Введен не верный пароль!') else
  begin
    Form2.Show;
    Form1.Visible:=false;
    k:=1;
  end;
как то так,
#39 - это символ %, он используется когда вам нужно ЧАСТИЧНОЕ совпадение поля
например в поле записано МАМА, и вы пишите МА%

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

Добавлено через 3 минуты
но я бы сделал так
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
k:=0;
  ADOQueryaccounts.SQL..Text:='SELECT count(*) FROM Пользователь WHERE Имя=:s and Пароль=:p';
  ADOQueryaccounts.params.parambyname('s').value:=Edit1.text;
  ADOQueryaccounts.params.parambyname('p').value:=Edit2.text;
  ADOQueryaccounts.Open;
  if ADOQueryaccounts.IsEmpty then ShowMessage('Не верное имя пользователя или пароль') else
  if ADOQueryaccounts.Fields[0].asInteger=1 then
  begin
    Form2.Show;
    Form1.Hide:=false;
    k:=1;
  end else 
  begin
    ShowMessage('Какая-то фигня. Похоже дубли в таблице');
  end;
Вопрос: Авторизация через базу данных Mysql в Visual Studio 2013

Здравствуйте! Хочу сделать авторизацию через базу данных Mysql в WPF.
Вопрос 1: Как подключиться к базе данных MySql?

Вопрос 2: Как лучше осуществить авторизацию?
Можете привести пример?)
Ни как не могу найти в google(
Ответ: Реализацию для безопасности лучше делать через сервер. Но может сделать и на клиенте. Скачай MySQL Connector и работай с ним. И поищи уроки на Youtube. Там полно всего по коннектору.

Вопрос: Identity авторизация через аккаунт microsoft

Подскажите, пож-та, кто знает(может туториал какой есть) как добавить в приложение авторизацию через аккаунт microsoft(гугл и fb авторизацию сделал, а майкрософтовской не нашел как)
Ответ: Тоже заинтересовал такой вопрос. Только я вообще не знаю даже как даже через гугл сделать.
Вопрос: Как на сайте сделать авторизацию через vk?

Как на сайте сделать авторизацию через vk? Чрез приложение в вк, через oauth? с чего начать.
Ответ: На гитхабе полно библиотек для апи ВК.
Для авторизации тоже, для ларавел я например socialite использую.
Вопрос: Реализация авторизации через состояния сеанса (или типа того)

Народ, всем привет.
Натолкните меня, пожалуйста, на какие-то более-менее понятные и конкретные статьи по реализации авторизации через состояния сеанса (или типа того). В теме я слаб, с авторизацией, аутентификацией и подобным раньше не сталкивался, поэтому нихрена не понятно)
Конструирую приложение asp.net на visual basic. Заранее спасибо.
Ответ: kmi, спасибо, попробую.
Вопрос: WebApi2 авторизация через токен без использования ASP.NET Identity

Всем добрый день!

Появилась задача реализовать API к работающему сервису. Нашел прекрасное решение WebApi2. В подарок из коробки получаю хорошее решение для авторизации в сервисе - ASP.NET Identity.

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

Есть ли простой способ реализовать авторизацию через токены с использованием собственных таблиц/данных?
Ответ: ЕвгенийВ, забыл поблагодарить за ссылку!
Все очень понятно и доступно. Для моей задачи хватило переопределить 3 класса:
Контекст для доступа к БД, менеджера для работы с сущностью пользователя, класс для работы с таблицей пользователей.
И внести несколько исправлений в класс ApplicationUser
Вопрос: Авторизация через Builder в SQL Server

Сделал авторизацию через Builder в SQL Server, но выдает ошибку..


Код C++
1
2
3
4
5
6
7
8
9
AnsiString login=Edit1->Text;
AnsiString password=Edit2->Text;
 
AnsiString cs="Provider=SQLOLEDB.1;Password="+Edit2+";Persist Security Info=True;User ID="+Edit1+";Initial Catalog=bank;Data Source=HELLO1NSIDE\SQLEXPRESS;";
 
ADOConnection1->Connected=false;
ADOConnection1->ConnectionString="";
ADOConnection1->ConnectionString=cs;
ADOConnection1->Connected=true;
Ошибка:
Ответ: _Dimon_, ура... заработало))
Большое спасибо!!!
Вопрос: Авторизация через другой сайт

Здравствуйте уважаемые форумчане. Как сделать авторизацию, через вап игру. Раскидайте всё по полкам, пожалуйста
Ответ:
плохая постановка вопроса, ничего не понятно
Вопрос: Авторизация через CURL

Всем привет. Пишу парсер и нужно авторизовываться на сайте, авторизация вроде проходит но возвращает ошибку :

Код PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/// Вот тут делаю первый запрос для того чтобы получить токен
$base = 'https://supply.elfmoney.ru/accounts/login/';
 
$curl = curl_init();
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_URL, $base);
curl_setopt($curl, CURLOPT_REFERER, $base);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$str = curl_exec($curl);
curl_close($curl);
 
$html_base = new simple_html_dom();
$html_base->load($str);
 
$hidden_value = $html_base->find('input[type=hidden]',0)->value; // выбираю токен
 
 
 
// делаю второй запрос с параметрами (логин, пароль, токен)
 
$urlTo = 'https://supply.elfmoney.ru/accounts/login/';
$post = 'username='.$this->login.'&password='.$this->password.'&csrfmiddlewaretoken='.$hidden_value.'&next=/new/'; // POST данные авторизации (укажите правильно)
 
 $cookie="csrftoken=$hidden_value;";
 
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
 curl_setopt($ch, CURLOPT_URL, $urlTo);
 
 curl_setopt($ch, CURLOPT_HEADER, 1); // получать заголовки
 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,30);
// curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36');
 curl_setopt($ch, CURLOPT_REFERER, $urlTo);
 curl_setopt($ch, CURLOPT_POST,1);
// curl_setopt($ch, CURLOPT_COOKIEJAR,$_SERVER['DOCUMENT_ROOT'].'/cookiefile.txt'); 
 curl_setopt($ch, CURLOPT_COOKIE, $cookie);
 curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
// curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
 // не проверять SSL сертификат
 curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
 // не проверять Host SSL сертификата
 curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
 
 $content = curl_exec($ch);
 
 curl_close($ch);
 
 
 echo $content;

Вот что возвращает :

HTTP/1.1 302 FOUND Server: nginx/1.6.0 Date: Fri, 30 Jan 2015 12:38:35 GMT Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive Expires: Fri, 30 Jan 2015 12:38:35 GMT Vary: Cookie Last-Modified: Fri, 30 Jan 2015 12:38:35 GMT Location: https://supply.elfmoney.ru/new/ Cache-Control: max-age=0 Set-Cookie: sessionid=zd5h3k2a5xhkwmos2fjvvflg7igq6psf; expires=Fri, 13-Feb-2015 12:38:35 GMT; httponly; Max-Age=1209600; Path=/ HTTP/1.1 301 MOVED PERMANENTLY Server: nginx/1.6.0 Date: Fri, 30 Jan 2015 12:38:36 GMT Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive Vary: Cookie Location: https://supply.elfmoney.ru/ HTTP/1.1 302 FOUND Server: nginx/1.6.0 Date: Fri, 30 Jan 2015 12:38:36 GMT Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive Vary: Cookie Location: https://supply.elfmoney.ru/login?next=/ HTTP/1.1 301 MOVED PERMANENTLY Server: nginx/1.6.0 Date: Fri, 30 Jan 2015 12:38:36 GMT Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive Location: https://supply.elfmoney.ru/login/?next=/ HTTP/1.1 503 Service Temporarily Unavailable Server: nginx/1.6.0 Date: Fri, 30 Jan 2015 12:38:36 GMT Content-Type: text/html Content-Length: 212 Connection: keep-alive

503 Service Temporarily Unavailable
nginx/1.6.0

1

-------

а если к примеру ввести не тот логин или пароль то возвращает HTML код формы и полей. Значит авторизация проходит, только почему ошибка "503 Service Temporarily Unavailable" и нет самой страницы с данными после авторизации?
Ответ: Немного изменил код:

Код PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
$base = 'https://supply.elfmoney.ru/accounts/login/';
 
$curl = curl_init();
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_URL, $base);
curl_setopt($curl, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36');
curl_setopt($curl, CURLOPT_REFERER, $base);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$str = curl_exec($curl);
curl_close($curl);
 
//echo $str;
 
   preg_match('/^Set-Cookie:\s*([csrftoken=][^;]*)/mi', $str, $m);
   parse_str($m[1], $cookies);
 
  // var_dump($cookies);
   // print_r($m);
   
     
     preg_match("/^Set-Cookie:\s*([sessionid=][^;]*)/mi",$str,$sessionId);
   parse_str($sessionId[1], $sessionId);
   
  // print_r($sessionId);
   
   echo '-'.$sessionId['sessionid'].'-';
   echo '-'.$cookies['csrftoken'].'-';
 
 
    $cookies = $cookies['csrftoken'];
    $sessionid = $sessionId['sessionid'];
 
//$html_base = new simple_html_dom();
//$html_base->load($str);
 
//$hidden_value = $html_base->find('input[type=hidden]',0)->value; // выбираю токен
 
 
 
// делаю второй запрос с параметрами (логин, пароль, токен)
    
     //  $cookie="csrftoken=$cookies; sessionid=$sessionid";
 
 
      $reffer = 'https://supply.elfmoney.ru/';
      $urlTo  = 'https://supply.elfmoney.ru/login/';
      $post   = 'username='.$this->login.'&password='.$this->password.'&csrfmiddlewaretoken='.$cookies.'&next=/new/'; // POST данные авторизации (укажите правильно)
       
     
 
 
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
 curl_setopt($ch, CURLOPT_URL, $urlTo);
 
 curl_setopt($ch, CURLOPT_HEADER, 1); // получать заголовки
 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,30);
 curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36');
 curl_setopt($ch, CURLOPT_REFERER, $urlTo);
 curl_setopt($ch, CURLOPT_POST,1);
// curl_setopt($ch, CURLOPT_COOKIEJAR,$_SERVER['DOCUMENT_ROOT'].'/cookiefile.txt'); 
 curl_setopt($ch, CURLOPT_COOKIE, $cookie);
 curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
// curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
       // не проверять SSL сертификат
       curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
       // не проверять Host SSL сертификата
       curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, false);
 
 $content = curl_exec($ch);
 
 curl_close($ch);
 
 
 echo $content;
 
Возвращает

HTTP/1.1 403 FORBIDDEN Server: nginx/1.6.0 Date: Fri, 30 Jan 2015 16:58:41 GMT Content-Type: text/html Transfer-Encoding: chunked Connection: keep-alive Vary: Cookie
Forbidden (403)

CSRF verification failed. Request aborted.

More information is available with DEBUG=True.
1
---

Заголовки надо отправлять. Ну так, для приличия. юзер-агент например..
пробовал я и с заголовками и без. Не идет.
Очень надо.

если ставлю curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); тогда возвращает вообще пустую страницу.

Добавлено через 10 минут
добавил вывод ошибок
Код PHP
1
2
3
4
5
6
7
 $content = curl_exec($ch);
 
    print_r(curl_getinfo($ch));  
    echo "cURL error number:".curl_errno($ch)."<br/>";  
    echo "cURL error:".curl_error($ch)."<br/>";   
 
 curl_close($ch);
выдаёт

Array ( [url] => https://supply.elfmoney.ru/login/ [content_type] => [http_code] => 0 [header_size] => 0 [request_size] => 0 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.047 [namelookup_time] => 0 [connect_time] => 0.047 [pretransfer_time] => 0 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => -1 [starttransfer_time] => 0 [redirect_time] => 0 [certinfo] => Array ( ) [redirect_url] => ) cURL error number:60
cURL error:SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

я так понимаю ошибка сертификата, но у меня бывало что несколько раз я получал нужную страницу, но после обновления опять вылетала 503, что делать???