OAuth2 Client
OAuth2 Client — это библиотека, которая поможет вам работать с токенами доступа и запросами OAuth2. Она предназначена только для использования в браузере (появилась из-за того, что использовалась для одностраничного приложения), поэтому включает в себя только поток OAuth2 Implicit Grant (https://tools.ietf.org/html/rfc6749#section-4.2).
OAuth2 Client позволяет работать с API, совместимыми с OAuth2, непосредственно из JS-приложения в браузере. Он инкапсулирует сложные части RFC, но оставляет достаточно гибкости для использования с любым JS-фреймворком.
Другие создали библиотеки JavaScript OAuth 2.0, такие как JSO (https://github.com/andreassolberg/jso), но OAuth2 Client делает меньше предположений о том, как работает ваше приложение (где нужен или используется токен, когда желательно перенаправление и т. д.). Это также упрощает работу со областями.
Этот проект в первую очередь ищет пользователей, но также приветствует вкладчиков. Если вы хотите помочь, вот несколько открытых задач:
— Удалить поддержку токенов обновления; — Добавить другие потоки предоставления прав, которые может использовать неконфиденциальный клиент; — Написать документацию.
NPM:
npm i --save @zalando/oauth2-client-js
Bower:
bower install --save oauth2-client-js
«Поставщик» управляет вашими токенами и знает, как обрабатывать ответы от конечной точки авторизации. Создайте нового поставщика следующим образом:
var OAuth = require('@zalando/oauth2-client-js');
var google = new OAuth.Provider({
id: 'google', // required
authorization_url: 'https://google.com/auth' // required
});
По умолчанию поставщик будет использовать localStorage для сохранения своих токенов, но с помощью storage
вы можете передать всё, что соответствует Storage API.
Большую часть времени вы будете хотеть делать две вещи: запрашивать новые токены и проверять, доступны ли токены.
Чтобы получить новый токен доступа, перенаправьте пользователя на конечную точку авторизации. Полный URI строится следующим образом:
// Create a new request
var request = new OAuth.Request({
client_id: 'my_client_id', // required
redirect_uri: 'http://my.server.com/auth-answer'
});
// Give it to the provider
var uri = google.requestToken(request);
// Later we need to check if the response was expected
// so save the request
google.remember(request);
// Do the redirect
window.location.href = uri;
Конечная точка авторизации перенаправит пользователя обратно на redirect_uri
и закодирует свой ответ в URI фрагмента. Поскольку ваше приложение полностью потеряло своё состояние, вы можете захотеть передать metadata
в запрос. Оно будет сохранено вместе с запросом и загружено позже. Например, туда можно поместить текущий маршрут вашего приложения.
Чтобы проанализировать ответ из URI, сделайте это следующим образом:
var response = google.parse(window.location.hash);
Это либо вызовет ошибку (например, если свойство state
не совпадает в запросе и ответе), либо вернёт ответ. На нём будут metadata
из запроса. Доступ и токены обновления теперь доступны у поставщика.
Они не входят в спецификацию RFC, но вы также можете их использовать (если ваш сервер их поддерживает). Чтобы отправить запрос на обновление:
var uri = google.refreshToken();
yourHttpLibrary
.get(uri)
.then(function(response) {
google.handleRefresh(response.body);
// ваши токены теперь бриллианты
// эм, обновлены.
});
google.getAccessToken()
и...
Здесь текст обрывается, так как в нём отсутствует перевод части исходного текста. google.getRefreshToken().
Apache 2.0 as stated in the LICENSE.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )