Будучи студентом, изучающим фронтенд-разработку, вам все равно нужно знать некоторые необходимые внутренние знания, наиболее прямым и базовым из которых является реализация входа в систему. Если взять GitHub в качестве примера, первый шаг — перейти на официальный сайт GitHub, чтобы установить необходимую информацию.Процесс выглядит следующим образом: Откройте официальный сайт и войдите в свою учетную запись: Откройте «Настройки» -> «Настройки разработчика».
-> Приложения OAuth -> Нажмите «Зарегистрировать новое приложение» -> Задайте имя приложения, URL-адрес домашней страницы, описание приложения, URL-адрес обратного вызова авторизации. Более подробный процесс см.официальная документация. Предыдущая картинка более наглядна. следующее:
Среди них некоторые персональные данные клиента, принадлежащие мне, были стерты, и друзья, которые хотят это реализовать, могут использовать свои собственные;
Потом это будет реализовываться медленно.В настоящее время многие крупные веб-сайты поддерживают сторонний вход.Как программист, частота использования GitHub довольно высока.В качестве примера возьмем GitHub. Когда дело доходит до стороннего входа в систему, мы должны говорить об Oauth.OAuth (открытая авторизация) — это открытый стандарт, который позволяет пользователям разрешать сторонним приложениям получать доступ к личным ресурсам (таким как фотографии, видео и т. д.), хранящимся на пользователя на веб-сайте, список контактов) без предоставления имени пользователя и пароля стороннему приложению. Этот протокол требует, чтобы данные, отправленные клиентом, соответствовали данным поставщика услуг (GitHub), и они могут быть переданы, если они верны и авторизованы.Процесс входа и авторизации протокола OAuth выглядит следующим образом: A. Клиент направляет пользователя на сервер аутентификации; B. Пользователь решает, авторизовать ли клиента; C. Если пользователь авторизован, сервер аутентификации направляет пользователя на URI перенаправления, указанный клиентом, и дает код в хэше часть URI; D. Браузер отправляет запрос на сервер ресурсов для подачи заявки на токен; E. Получите токен и возьмите токен для выполнения операции.
Предыдущий кусок кода:
const router = require('koa-router')()
const config = require('../config')
const fetch = require('node-fetch')
const routes = router
.get('/login', async (ctx) => {
// 去到github授权页
const dataStr = (new Date()).valueOf();
var path = 'https://github.com/login/oauth/authorize';
path += '?client_id=' + config.client_id;
path += '&scope=' + config.scope;
path += '&state=' + dataStr;
console.log(path)
// authorize 授权 (注册/申请)一下我们的应用
ctx.redirect(path) // 送到授权的中间页
})
.get('/oauth/callback', async (ctx) => {
const code = ctx.query.code
let path = 'https://github.com/login/oauth/access_token';
const params = {
client_id: config.client_id,
client_secret: config.client_secret,
code: code
}
await fetch(path, {
// 没有fetch,需要装node-fetch
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(params)
})
.then(res => {
// console.log(res)
return res.text() // 获得到的是一个二进制流,转换成文本
})
.then(body => {
const args = body.split('&');
let arg = args[0].split('=');
const access_token = arg[1];
console.log(access_token);
return access_token;
})
.then(async(token) => {
const url =
'https://api.github.com/user?access_token=' + token // token就是oauth令牌环
console.log(url)
await fetch(url)
.then(res => {
return res.json()
})
.then(res => {
console.log(res)
ctx.body = res
})
})
})
module.exports = routes;
Код страницы конфигурации выглядит следующим образом:
module.exports = {
'client_id': '1fc534c9a4*************',
'client_secret': 'f5380d4*****************aeb2027ac87b6dc6',
'scope': ['user'] // 授权范围
}
Наконец, последняя волна рендеров:
См. полный кодGitHub
Процесс клиентский: отправить данные на GitHub для проверки, продолжить авторизацию после проверки, подать заявку на получение токена, а затем уже после получения токена можно совершать другие операции. .
Я надеюсь, что эта статья будет вам полезна.Если у вас есть какие-либо комментарии и идеи, вы можете оставить сообщение внизу этой статьи.