Автор оригинала: David Wong.
Вход в систему Weibo является одним из наиболее часто используемых учетных записей сторонних разработчиков. Из-за большого количества пользователей и функциональных интерфейсных функций он пользуется популярностью у многих разработчиков.
Поскольку это третья сторона, если вы хотите использовать их учетную запись для входа в систему, то первым шагом должно быть подать заявку на учетную запись разработчика.
Есть два трудных условия, иначе это повлияет на ваше развитие.
Аккаунты Weibo, это должно быть все.
Доменное имя и сервер, то есть у вас есть свой собственный веб-сайт. Но для компании гораздо проще развиваться.
Заявка на Счет развития
Сначала зайдите на открытую платформу микроблога: http://open.weibo.com/connect, немедленно нажмите “Доступ”, заполните форму и убедитесь, что веб-сайт в порядке.
Затем вы можете увидеть заявку, на которую вы подали заявку, в моей заявке. Текущий статус-нет представления аудита, после того, как вы завершили разработку онлайн, отправьте аудит микроблога, после утверждения аудита можно использовать в обычном режиме. (Только проверьте доступ к учетной записи перед аудитом)
Пока что мы можем начать нашу работу по разработке. Чтобы войти на информационную страницу веб-сайта, мы сначала получаем идентификатор приложения и необходимую нам секретную информацию.
Далее мы приступаем к разработке, здесь мы используем фреймворк YII2, расширенную версию. Другие структуры придерживаются тех же принципов.
YII2 Интегрированный Вход в систему Weibo
Прежде всего, краткое введение в процесс разработки логина третьей стороны.
При заполнении параметров создается URL-ссылка, которая переходит в микроблог.
После проверки правильности этих параметров в микроблоге вернитесь на указанный вами обратный адрес и возьмите параметр с собой.
кодВы получите его
кодПосле параметров используйтекодВ качестве параметра запросите адрес, получитезнакэтот
токенЭто твой ключ. С его помощью вы можете получить доступ ко всем доступным интерфейсам Weibo. (Например, получить информацию о пользователе, получить идентификатор пользователя), поэтому, чтобы собрать ее, мы помещаем ее в сеанс.Вот бизнес-логика вашего собственного веб-сайта.
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();
}В следующий раз, когда пользователь снова нажмет кнопку входа в микроблог, будут выполнены следующие действия
Перейти к доступу к микроблогу
кодВернитесь на страницу веб – сайтапринять
кодексПолучитьтокенБудеттокенВведен всеанспринять
токенПолучение пользователей Weiboopen_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/”