Скажем, то, что у меня есть веб-приложение, которое должно получить доступ к файлам Диска в фоновом сервисе. Это будет или владеть файлами, к которым это получает доступ, или быть выполненным в Google Account, с которым владелец совместно использовал документы.
Я понимаю, что для моего приложения нужен маркер обновления, но я не хочу писать код для получения этого, так как я буду только когда-либо делать это однажды.
NB. Это НЕ использует Сервисную учетную запись. Приложение будет запущено в соответствии со стандартной учетной записью Google. Сервисная учетная запись является допустимым подходом в некоторых ситуациях. Однако метод использования Детской площадки OAuth для моделирования приложения может сохранить набор избыточного усилия и относится к любым API, для которых не поддерживается совместное использование к Сервисной учетной записи.
Позвольте мне добавить альтернативный маршрут к превосходному ответу pinoyyid (который не работал на меня - выталкивающий ошибки перенаправления).
Вместо того, чтобы использовать OAuthPlayground можно также использовать REST HTTP API непосредственно. Таким образом, различие к ответу pinoyyid - то, что мы сделаем вещи локально. Следуйте за шагами 1-3 от ответа pinoyyid. Я заключу им в кавычки:
Теперь, вместо детской площадки, добавьте следующее к своим учетным данным:
Авторизованные Источники JavaScript: http://localhost (я не знаю, требуется ли это, но просто делает это.)
Авторизованное Перенаправление URIs: http://localhost:8080
Снимок экрана (на немецком языке):
Удостоверяются к [1 164], на самом деле сохраняют Ваши изменения через синюю кнопку ниже!
Теперь Вы, вероятно, захотите использовать GUI для создания Запросов HTTP. Я использовал Бессонница , но можно пойти с [1 125] Почтальон или простое ЗАВИХРЕНИЕ. Я рекомендую, чтобы Бессонница для него позволила Вам проходить экраны согласия легко.
Сборка новое ДОБИРАЮТСЯ запрос со следующими параметрами:
URL: https://accounts.google.com/o/oauth2/v2/auth
Query Param: redirect_uri=http://localhost:8080
Query Param: prompt=consent
Query Param: response_type=code
Query Param: client_id=<your client id from OAuth credentials>
Query Param: scope=<your chosen scopes, e.g. https://www.googleapis.com/auth/drive.file>
Query Param: access_type=offline
, Если Ваш предпочтительный инструмент не обрабатывает URL, кодирующий автоволшебно, удостоверяются, что получили его правильный самостоятельно.
перед увольнением запроса, настраивает веб-сервер для слушания на http://localhost:8080
. Если у Вас есть узел, и npm установил выполненный npm i express
, то создайте index.js
:
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('ok');
console.log(req)
});
app.listen(8080, function () {
console.log('Listening on port 8080!');
});
И выполненный сервер через node index.js
. Я рекомендую или не регистрирую целое req
, объект или работать node index.js | less
за полным выводом будет огромен.
существуют очень простые решения для других языков, также. Например, используйте PHP's, созданный в веб-сервере на 8 080 php -S localhost:8080
.
Теперь запускают Ваш запрос (при Бессоннице), и Вам нужно предложить с входом в систему:
Входят в систему с Вашей электронной почтой и паролем и подтверждают экран согласия (должен содержать Ваши выбранные объемы).
Возвращаются к Вашему терминалу и проверяют вывод. Если Вы зарегистрировались, все это прокручивает вниз (например, pgdown в меньше), пока Вы не видите строку с [1 111].
Копия тот код; именно Ваш код авторизации Вы захотите обмениваться для доступа и обновить маркер. Не копируйте слишком много - если существует амперсанд &
, не копируют его или ничто после. &
разграничивает параметры запроса. Мы просто хотим code
.
Теперь настраивает запрос POST HTTP, указывающий https://www.googleapis.com/oauth2/v4/token
как [1 130], URL формы закодировал . При Бессоннице можно просто нажать это - в других инструментах, Вам, возможно, придется установить заголовок самим на [1 116].
Добавляют следующие параметры:
code=<the authorization code from the last step>
client_id=<your client ID again>
client_secret=<your client secret from the OAuth credentials>
redirect_uri=http://localhost:8080
grant_type=authorization_code
Снова, удостоверьтесь, что кодирование корректно.
Огонь Ваш запрос и проверка вывод с Вашего сервера. В ответе необходимо видеть объект JSON:
{
"access_token": "xxxx",
"expires_in": 3600,
"refresh_token": "1/xxxx",
"scope": "https://www.googleapis.com/auth/drive.file",
"token_type": "Bearer"
}
можно использовать access_token
сразу же, но это только будет допустимо в течение одного часа. Отметьте маркер обновления. Это - то, которое Вы всегда можете* обмен для нового маркера доступа.
*
необходимо будет повторить процедуру, если пользователь изменяет свой пароль, отклоняет доступ, неактивно в течение 6 месяцев и т.д.
Счастливый OAuthing!