Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Авторизация на сайте через гугл
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Авторизация на сайте через гугл

Страниц (1): [1]
 

1. Gerd - 05 Апреля, 2019 - 21:26:55 - перейти к сообщению
CODE (javascript):
скопировать код в буфер обмена
  1.     function onSignIn(googleUser) {
  2.         // Useful data for your client-side scripts:
  3.         var profile = googleUser.getBasicProfile();
  4.         console.log('ID: ' + profile.getId()); // Don't send this directly to your server!
  5.         console.log('Full Name: ' + profile.getName());
  6.         console.log('Given Name: ' + profile.getGivenName());
  7.         console.log('Family Name: ' + profile.getFamilyName());
  8.         console.log('Image URL: ' + profile.getImageUrl());
  9.         console.log('Email: ' + profile.getEmail());
  10.  
  11.         // The ID token you need to pass to your backend:
  12.         var id_token = googleUser.getAuthResponse().id_token;
  13.         console.log('ID Token: ' + id_token);
  14.     }  


Есть следующий код, получаем все необходимые данные. Вопрос в том, как зарегистрировать пользователя. Поиск и регистрация по электронке, отправляем яксом запрос к php c эмеил адресом. И авторизовываем, либо регаем...


Вопрос в том, что если другой пользователь подставит свой адрес электронки и его система авторизует. Как быть в таком случаи?
2. Vladimir Kheifets - 06 Апреля, 2019 - 08:00:26 - перейти к сообщению
Gerd пишет:
Вопрос в том, что если другой пользователь подставит свой адрес электронки и его система авторизует. Как быть в таком случаи?

Добрый день!
Если другой пользователь подставит свой адрес электронки, то его система авторизует, только при наличии его мэйла в Вашем проекте.
Чтобы использовать API Вам необходимо создать проект.
https://console[dot]developers[dot]google[dot]com/
Там нужно ввести учётные данные. Например, мэйл пользователя и URL,
к которым он получает доступ.
https://vivazzi[dot]pro/it/auth-google/
Удачи!
3. Gerd - 06 Апреля, 2019 - 09:00:25 - перейти к сообщению
Проект создан, данные о пользователе получаю в консоле после того как пользователь разрешил доступ и при следующих загрузках страниц(не выполняя никаких действий).

Подскажите, если третьи лица знают эмеил адрес другого пользователя и имеют навыки в php(отправка якса). То получается к примеру я могу внести правки в исходном коде страницы и отправить пост запрос к скрипту на сайту с указанием emeil адрес. То получается, что по факту я смогу авторизоваться под любым аккаунтом на сайте. Вот этот мне момент не понятен, как быть с безопастностью в данном случаи?


Другой вопрос как указать url страницы после того как пользователь разрешает доступ к совим данным, чтобы его система перенаправил на ту страницу с которой был выполнен запрос к гуглу.
4. Gerd - 07 Апреля, 2019 - 08:39:33 - перейти к сообщению
хелп
5. Vladimir Kheifets - 08 Апреля, 2019 - 08:37:59 - перейти к сообщению
Gerd пишет:
хелп

Добрый день!
Мне кажется, что затея у Google была такая:
Создаётся сайт (клиент Google API) и проект на Google.
В учётных данных пользователя этого проекта указывается мейл пользователя
и URL2, на который проект разрешает переход после успешной авторизации.
В учётных данных клента указывется URL1 сайта, с которого будет
отправляться запрос на авторизацию.
На сайте-клиента URL1, по клику пользователя по кнопке "зайти через гугл",
запускается класс API отправляющий запрос на авторизацию.
На URL2 запускается класс API отправляющий запрос для получения результата авторизации.
Что у Google не верно с точки зрения безопасности?
Попытайтесь сформулировать более конкретно Ваши опасения.
Удачи!
6. Gerd - 09 Апреля, 2019 - 22:55:53 - перейти к сообщению
Не могу разобрать...

Первое, повесил событие на элемент html. То есть пользователь кликает по блоку на сайте, а js в свою очередь кликает по кнопке от гугла. Вопрос, как можно избавиться от лишних движений. То есть чтобы при клике на блок на сайте, сразу отправить запрос к гугулу на разрешение авторизации.

Второе, да, изначально необходимо указать url куда отправлять пользователей после авторизации. Но читая различную документацию по api от гугл. Можно указать в настройках видимо сайта, то есть при отправке запроса так же отправлять url страницы на которой находится посетитель. Так вот, как это сделать после того как снимится задача по первому вопросу.
7. Vladimir Kheifets - 10 Апреля, 2019 - 07:11:37 - перейти к сообщению
Gerd пишет:
Не могу разобрать...
Первое, повесил событие на элемент html. То есть пользователь кликает по блоку на сайте, а js в свою очередь кликает по кнопке от гугла. Вопрос, как можно избавиться от лишних движений. То есть чтобы при клике на блок на сайте, сразу отправить запрос к гугулу на разрешение авторизации....

Давайте сначала разберёмся с этим.
Пользователь кликает по блоку на сайте, а в js отрабатывается событие click или touchstart и отправляется запрос на гугле. Появляется окно автризации гугле и поситительт вводит свой мэйл. После авторизации гугле запускает URL указанный в проекте.
В связи с этим ничего лишнего не увидел.
Не хотите лишних движений, делайте авторизцию сами.
8. Gerd - 10 Апреля, 2019 - 10:42:33 - перейти к сообщению
[quote=Vladimir Kheifets][/quote]

После клика по блоку, срабатывает click, в нем через js кликает по скрытой кнопке от гугла

CODE (javascript):
скопировать код в буфер обмена
  1. $(this).on('click', function(elem){  
  2.         var namvl = $(this).attr('data').split('--');
  3.         $('.'+namvl[1], 0).click();
  4. });


Как сделать так, чтобы при клике, не кликали по кнопке, а сразу отправляли запрос к гуглу.
9. Gerd - 10 Апреля, 2019 - 12:59:51 - перейти к сообщению
Кли по клику на блок вызывать
onSignIn(googleUser);
Не определяется googleUser;

 

Powered by ExBB FM 1.0 RC1