Zauth: авторизация с помощью соц. сетей

#61 27 мая 2019 в 11:26
Добавлена авторизация с помощью гугл bergorod.ru/auth/login
В вк теперь берется максимально возможная аватарка (и уже потом создаются пресеты в профиль).
Поправлен баг, когда при повторной авторизации пользователь попадал на страницу, которая указана в настройках для новых пользователей.

Обновляю страницу по приложениям и выпущу обновление.
Все купившие получат обновление на почту.
#62 27 мая 2019 в 13:27
Респект. Ждем обновку.
#63 27 мая 2019 в 22:39
Zau4man, Спасибо за обновку. Быстро подключил новые сети благодаря подробной инструкции. Все четко!
#64 29 мая 2019 в 19:52
Zau4man, Подскажите пожалуйста: User authorization failed: user revoke access for this token. (Авторизация пользователя не удалась: пользователь отозвал доступ для этого токена.)

Эта ошибка в каком случае появляется? Пользователь в базу не попадает же в таком случае?
#65 29 мая 2019 в 20:43
Любые сообщения об ошибках означают, что пользователь не зарегистрировался.

Эта ошибка в каком случае появляется?

@Kerncraft1

Ошибка получается в момент получения данных о пользователе. Но я даже представить не могу ситуацию, в которой пользователь дал согласие на доступ нашему приложению в вк и за секунду отозвал токен… Например, сменив пароль, или разлогинившись…
#66 6 июня 2019 в 09:27
Уважаемый Zau4man, не могу понять вашего упорного не желания добавить в компонент авторизацию через mail.ru. На мой взгляд это самая простая реализация. Здесь добавляется сайт. На открывшейся странице, в первую очередь, соглашаемся с правилами размещения сайтов. Далее заполняем форму:

Название будет "Mail.ru Auth". Адрес главной страницы — это тот url адрес страницы, где будет внедрён основной функционал: localhost/mailru-auth. Таким образом, на локальном сервере поместим наши файлы в каталог "mailru-auth".

Далее нажимаем на кнопку "Продолжить" и переходим к следующему шагу. На третьем шаге необходимо скачать файл receiver.html, поместить его в каталог вашего проекта и дать Mail.ru возможность проверить существование данного файла. Поскольку наш пример предназначен для работы на локальном сервере, то мы этого делать не будем. Просто нажимаем кнопку "Продолжить", и на следующей странице "Пропустить". Если же вы создаёте пример для приложения работающего на каком-то реальном сервере, то сначала пройдите процедуру проверки наличия файла receiver.html, иначе функциональность вашего примера может быть ограничена.

Итак, после успешного добавления сайта в сервис Mail.ru, нам должно выдастся следующее сообщение со специальными параметрами:


А ниже пример получения данных о пользователе (код нужно вставить в файл php)
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
  6. <title>Аутентификация через Mail.ru</title>
  7. </head>
  8. <body>
  9.  
  10. <?php
  11.  
  12. $client_id = '702253'; // ID
  13. $client_secret = '81fefec83a3ff8903af3fc4ae7bcc18e'; // Секретный ключ
  14. $redirect_uri = 'http://localhost/mailru-auth'; // Ссылка на приложение
  15.  
  16. $url = 'https://connect.mail.ru/oauth/authorize';
  17.  
  18. $params = array(
  19. 'client_id' => $client_id,
  20. 'response_type' => 'code',
  21. 'redirect_uri' => $redirect_uri
  22. );
  23.  
  24. echo $link = '<p><a href="' . $url . '?' . urldecode(http_build_query($params)) . '">Аутентификация через Mail.ru</a></p>';
  25.  
  26. if (isset($_GET['code'])) {
  27. $result = false;
  28.  
  29. $params = array(
  30. 'client_id' => $client_id,
  31. 'client_secret' => $client_secret,
  32. 'grant_type' => 'authorization_code',
  33. 'code' => $_GET['code'],
  34. 'redirect_uri' => $redirect_uri
  35. );
  36.  
  37. $url = 'https://connect.mail.ru/oauth/token';
  38.  
  39. $curl = curl_init();
  40. curl_setopt($curl, CURLOPT_URL, $url);
  41. curl_setopt($curl, CURLOPT_POST, 1);
  42. curl_setopt($curl, CURLOPT_POSTFIELDS, urldecode(http_build_query($params)));
  43. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  44. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  45. $result = curl_exec($curl);
  46. curl_close($curl);
  47.  
  48. $tokenInfo = json_decode($result, true);
  49.  
  50. if (isset($tokenInfo['access_token'])) {
  51. $sign = md5("app_id={$client_id}method=users.getInfosecure=1session_key={$tokenInfo['access_token']}{$client_secret}");
  52.  
  53. $params = array(
  54. 'method' => 'users.getInfo',
  55. 'secure' => '1',
  56. 'app_id' => $client_id,
  57. 'session_key' => $tokenInfo['access_token'],
  58. 'sig' => $sign
  59. );
  60.  
  61. $userInfo = json_decode(file_get_contents('http://www.appsmail.ru/platform/api' . '?' . urldecode(http_build_query($params))), true);
  62. if (isset($userInfo[0]['uid'])) {
  63. $userInfo = array_shift($userInfo);
  64. $result = true;
  65. }
  66. }
  67.  
  68. if ($result) {
  69. echo "Социальный ID пользователя: " . $userInfo['uid'] . '<br />';
  70. echo "Имя пользователя: " . $userInfo['nick'] . '<br />';
  71. echo "Email: " . $userInfo['email'] . '<br />';
  72. echo "Ссылка на профиль пользователя: " . $userInfo['link'] . '<br />';
  73. echo "Пол пользователя: " . $userInfo['sex'] . '<br />';
  74. echo "День Рождения: " . $userInfo['birthday'] . '<br />';
  75. echo '<img src="' . $userInfo['pic_small'] . '" />'; echo "<br />";
  76. }
  77. }
  78.  
  79.  
  80.  
  81.  
  82.  
  83. ?>
  84.  
  85. </body>
  86. </html>
С удовольствием купил бы компонент, но на сайте уже есть пользователи, зарегистрированные через mail.ru с помощью ulogin.
#67 6 июня 2019 в 12:26

не могу понять вашего упорного не желания добавить в компонент авторизацию через mail.ru

@geminisf
так так можно сказать и об остальных соц. сетях.
Потом твиттер, инстаграм.
Просто текущими пятью покрыто 99% населения нашей необъятной.

Спасибо за код. В следующем обновлении будет майл.ру
#68 6 июня 2019 в 19:59

В следующем обновлении будет майл.ру

Zau4man
Это радует. Спасибо. Буду брать.
#69 15 июня 2019 в 20:16
На демо работает вход через mail.ru bergorod.ru/auth/login
В понедельник будет обновление инструкций и, скорее всего, обновление.

Если есть желающие, прошу протестировать.
#70 16 июня 2019 в 00:53


На демо работает вход через mail.ru bergorod.ru/auth/login
Если есть желающие, прошу протестировать.

Zau4man
попробовал зарегистрироваться — никаких проблем.
#71 16 июня 2019 в 11:27

На демо работает вход через mail.ru bergorod.ru/auth/login
В понедельник будет обновление инструкций и, скорее всего, обновление.

Если есть желающие, прошу протестировать.

Zau4man

Работает.
#72 16 июня 2019 в 12:11
если купить это дополнение, уже будет с маил.ру?
#73 16 июня 2019 в 14:34
ignat, да, но только без инструкции. Она есть в посте выше /forum/thread31368-5.html#311753

Но не без нюансов:
— на шаге проверки наличия receiver.html надо нажать пропустить. Какой-то баг, и майл.ру не находит файл. Хотя он 100% есть
— после добавления сайта в Мой.мир зайти в настройки сайта и указать ссылку на receiver.html там

И скорее всего дополнение отправлю только завтра после обеда.
#74 17 июня 2019 в 18:06
Zau4man, как на счёт вынести в Настройки список получаемых прав доступа и сохранения токенов в базу данных?
#75 17 июня 2019 в 20:12

как на счёт вынести в Настройки список получаемых прав доступа и сохранения токенов в базу данных

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