Рубрики
Uncategorized

Yii2 интегрирует вход в микроблог сторонних разработчиков (включая приложение для учетной записи, создание форм и общий процесс бизнес-логики)

Автор оригинала: David Wong.

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

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

Есть два трудных условия, иначе это повлияет на ваше развитие.

  1. Аккаунты Weibo, это должно быть все.

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

Заявка на Счет развития

Сначала зайдите на открытую платформу микроблога: http://open.weibo.com/connect, немедленно нажмите “Доступ”, заполните форму и убедитесь, что веб-сайт в порядке.

Затем вы можете увидеть заявку, на которую вы подали заявку, в моей заявке. Текущий статус-нет представления аудита, после того, как вы завершили разработку онлайн, отправьте аудит микроблога, после утверждения аудита можно использовать в обычном режиме. (Только проверьте доступ к учетной записи перед аудитом)

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

Далее мы приступаем к разработке, здесь мы используем фреймворк YII2, расширенную версию. Другие структуры придерживаются тех же принципов.

YII2 Интегрированный Вход в систему Weibo

Прежде всего, краткое введение в процесс разработки логина третьей стороны.

  1. При заполнении параметров создается URL-ссылка, которая переходит в микроблог.

  2. После проверки правильности этих параметров в микроблоге вернитесь на указанный вами обратный адрес и возьмите параметр с собой. код

  3. Вы получите его код После параметров используйте код В качестве параметра запросите адрес, получите знак

  4. этот токен Это твой ключ. С его помощью вы можете получить доступ ко всем доступным интерфейсам Weibo. (Например, получить информацию о пользователе, получить идентификатор пользователя), поэтому, чтобы собрать ее, мы помещаем ее в сеанс.

  5. Вот бизнес-логика вашего собственного веб-сайта.

1. Новая Таблица Данных

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

Таблица пользователей

CREATE TABLE `br_user` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_nickname` varchar(30) NOT NULL,
  `user_password` varchar(80) NOT NULL,
  `user_email` varchar(255) NOT NULL,
  `auth_key` varchar(128) DEFAULT NULL,
  PRIMARY KEY (`user_id`),
  UNIQUE KEY `USEREMAIL` (`user_email`)
) ENGINE = InnoDB AUTO_INCREMENT = 14 DEFAULT CHARSET = utf8 COMMENT ='User Information Table';

Список Учетных записей Третьих Лиц

CREATE TABLE `br_open_info` (
  ` ID `int(11) NOT NULL AUTO_INCREMENT COMMENT'Wechat login id',
  ` Open_id `varchar (64) NOT NULL COMMENT'Open_id for third party login',
  ` User_id `int(11) NOT NULL COMMENT'Website User ID',
  ` Nickname `varchar (300) NOT NULL COMMENT'Third Party User Nickname',
  ` Type `tinyint (1) NOT NULL DEFAULT'1'COMMENT'1: Weibo',
  ` create_time `int(11) unsigned NOT NULL COMMENT'create time',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=utf8;

О пользовательских таблицах нечего сказать. Давайте поговорим о сторонних информационных таблицах.

  • Open_id-это уникальный идентификатор пользователя, предоставляемый вам при входе третьей стороны в систему и не изменяющийся.

  • Идентификатор пользователя-это идентификатор пользователя вашего собственного веб-сайта, который может связывать пользователей этого сайта со сторонними учетными записями.

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

  • Суть в том, что ваш веб-сайт может использовать не только логин третьей стороны, такой как Weibo, Qq, Weixin, поэтому мы можем провести различие.

2. Интегрирующий код

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

Загрузка выглядит следующим образом:

  • среди saetv2.ex.class. php Это его основной документ, а другие документы в основном дополняют друг друга.

  • index.php Файл-это домашняя страница, фактически, его единственная роль-создать ссылку для перехода в микроблог.

  • config.php Это некоторые файлы конфигурации, на которые вы только что подали заявку с официального сайта. идентификатор приложения И так далее.

  • callback.php После того, как вы перейдете на Weibo, он вернется по адресу.

  • После того, как вы перейдете на Weibo, он вернется по адресу. После успешной авторизации вы получите демо-версию списка его микроблогов

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

Во-первых, он направлен на config.php Файл, это тоже самый простой, мы открываем его, обнаруживаем, что всего несколько строк кода.

На самом деле, это конфигурация. идентификатор приложения , app_secret , обратный вызов Мы бросили их в файл конфигурации Yii.

'weibo'=>[
        'app_key'=>'your app_key',
        'app_secret'=>'your app_secret',
        'back_url'=>'Your bounce address, such as: http://www.bidianer.com/login/weibo-back (this is mine)'
    ],

Теперь давайте посмотрим на это. saetv2.ex.class.php После открытия мы обнаружили, что в этом файле есть два класса. Чтобы облегчить разработку, мы разделили его на два файла для хранения. В первом файле хранятся классы выше, а во втором файле хранятся классы ниже. В то же время мы копируем его в каталог Yii2 поставщик/|/yii софт/yii2/веб Это как тебе нравится.

Мы назвали разделенный файл Мы назвали разделенный файл и SaeTClientV2.php Имя класса совпадает с именем файла. Добавьте пространства имен одновременно yii web

3. Разработка Контроллера

Теперь давайте перейдем к контроллеру и начнем настоящую разработку.

1. Новое строительство Новое строительство В инициализация

$this->app_key = Yii::$app->params['weibo']['app_key'];
$this->app_secret = Yii::$app->params['weibo']['app_secret'];
$this->back_url = Yii::$app->params['weibo']['back_url'];

2. Новая домашняя страница входа индекс Метод и одновременно создавайте ссылки для перехода в микроблог

$sea = new SaeAuth($this->app_key , $this->app_secret);
$weibo_url = $sea->getAuthorizeURL($this->back_url);

Перед этим вам нужно использовать yii web Saeaut (Обратная косая черта здесь не работает)

3. Затем мы построим новый. weibo-back Метод обработки постобработки отказов микроблогов.

Получение возвращаемых параметров Weibo код

$code = Yii::$app->request->get('code');

Получить токен

$sea = new SaeAuth($this->app_key , $this->app_secret);
if ($code)
{
    $keys = array();
    $keys['code'] = $code;
    $keys['redirect_uri'] = $this->back_url;
    try {
        $token = $sea->getAccessToken( 'code', $keys ) ;
    } catch (Exception $e) {
        throw new NotFoundHttpException;
    }
}

Если вы получите следующий токен Успех, мы поместили его в сессию Сохраните его для последующего использования

if ($token)
{
    $session = Yii::$app->session;
            $session['token'] = [
                'access_token'=>$token['access_token'],
                'uid'=>$token['uid'],
                'lifetime'=> 24*3600/// Here I set up a day, you can set the right time by yourself.
            ];
    $this->redirect(Url::toRoute('/login/complete-info'));
}

Почему бы нам не разобраться с другой логикой на этой странице? Потому что код Не может быть использован повторно, что вы имеете в виду? Это на этой странице: http://www.bidianer.com/login/weibo-back?code=XXXX Вы не можете обновить, иначе микроблог выдаст вам ошибку. Так что мы его получили. код Получить токен Давайте поторопимся. сессия Бегите, переходите на другие страницы и делайте это медленно.

4. Совершенствование Информации о Пользователях

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

Вот простой шаг: проверьте, привязан ли пользователь к учетной записи.

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

Мы сессия В середине жетон Мы можем использовать его для получения уникального идентификатора пользователя

$token = Yii::$app->session->get("token");
$c = new SaeTClientV2( $this->app_key , $this->app_secret , $token['access_token'] );
$uid_get = $c->get_uid();
$uid = $uid_get['uid'];

Ниже приведены общие/модели Чжунсинь OpenInfo.php Непосредственно вызовите запрос:

$open_user = OpenInfo:: findOne (['open_id'=> $uid,'type'=>'1']); and // where type = 1 stands for microblog.

Если он существует, это означает, что пользователь привязал свою учетную запись и автоматически вошел в систему.

if($open_user)
{
    User = User:: FindOne ($open_user-> user_id); //When open_info information exists, the user_id is taken directly to the user table to query user information.
    Yii::$app->user->login($user, 3600 * 24 * 30);
    $this->goHome();
}

Если привязки нет, мы получаем основную информацию о пользователе, показываем форму с полной информацией о пользователе и заполняем учетную запись привязки.

$user_message = $c - > show_user_by_id ($uid); //Get basic information such as users based on ID
return $this->render('completeInfo',['info'=>$user_message]);

Вот мы и пришли полная информация Просмотр Печатной Информации о Пользователе:

Это все еще очень подробно. Всё.

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

4. Регистрация Пользователя

Это позволяет пользователям регистрироваться после настройки своего почтового ящика и пароля. Процесс регистрации здесь соответствует процессу регистрации вашей учетной записи на веб-сайте.

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

//avatar
//unique identification code for users of microblog
//microblog user nickname"

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

Регистрационный код

$user = new User();
$user->setPassword($post['user_password']);
$user->generateAuthKey();
$user->user_nickname = $post['user_nickname'];
$user->user_email = $post['user_email'];
$user->user_headimg = isset($post['user_headimg'])? $post['user_headimg'] : null;
$user->save();

После успешной регистрации мы получим идентификатор пользователя

5. Привязка учетной записи

Вот привязка учетной записи

$open = new OpenInfo();
$open->open_id = $post['open_id'];
$open->user_id = $user->user_id;
$open->nickname = $post['open_nickname'];
$open - > type = 1; // type = 1 is microblog
$open->create_time = time();
if($open->validate())
{
    $open->save();
}

В следующий раз, когда пользователь снова нажмет кнопку входа в микроблог, будут выполнены следующие действия

  • Перейти к доступу к микроблогу код Вернитесь на страницу веб – сайта

  • принять кодекс Получить токен Будет токен Введен в сеанс

  • принять токен Получение пользователей Weibo open_id

  • принять open_id Для Информационного листа Пользователя Третьей Стороны br_open_info запрос

  • Если запись найдена, она основана на br_open_info Хранилище таблиц идентификатор пользователя перейти |/br_user Таблица Получает Информацию О Пользователе Автоматический вход в систему, сразу прыгайте

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

Ян Ин 2016-09-28

Оригинал: “https://developpaper.com/yii2-integrates-third-party-microblog-login-including-account-application-form-building-and-common-business-logic-process/”