Способы авторизации, рассмотренные далее, могут пригодиться если к примеру необходимо периодически отправлять какие-нибудь данные, либо просто напоминать о себе для того, чтобы преодолеть квоту на общее время выполнения триггеров, из операционной системы Windows в адрес скрипта Google Apps Script, развернутого в качестве веб-приложения таким образом, что доступ к приложению имеет только владелец ("Кто имеет доступ к приложению" - "Только я").
Для начала дисклеймер: если у вас включена двухфакторная авторизация или иные подобные параноидальные свистелки, приведенный ниже код может не прокатить.
Но иногда вместо формы с полями для логина-пароля Google подсовывает... не помню как называется, короче форму для выбора аккаунта (кто вспомнил как эта хрень правильно называется - пишите в комменты плиз). Поэтому желательно сразу же авторизоваться с помощью формы с полями, после чего уже уверенно отправлять запросы в адрес скрипта.
Вариант #2:
Вот как-то так.
Для начала дисклеймер: если у вас включена двухфакторная авторизация или иные подобные параноидальные свистелки, приведенный ниже код может не прокатить.
Метод обоих вариантов заключается в следующем: заполняем форму и получаем сессию. Все просто.
Вариант #1:
$url = 'https://script.google.com/macros/s/AKfycbyKvED90DogevP_vBIbTnwQOp2f6kD-MhBgDOYAcl8o6WZDKT97/exec'
$timeout = 10
$email = 'mymail@gmail.com'
$pass = 'mypass'
$auth = Invoke-WebRequest -Uri $url -TimeoutSec $timeout -SessionVariable session
$form = $auth.Forms[0]
$form.Fields['Email'] = $email
$form.Fields['Passwd'] = $pass
$res = Invoke-WebRequest -Uri $form.Action -WebSession $session -Method POST -Body $form.Fields
if ($res.StatusCode -eq 200) {
Write-Host $res.Content
}
Но иногда вместо формы с полями для логина-пароля Google подсовывает... не помню как называется, короче форму для выбора аккаунта (кто вспомнил как эта хрень правильно называется - пишите в комменты плиз). Поэтому желательно сразу же авторизоваться с помощью формы с полями, после чего уже уверенно отправлять запросы в адрес скрипта.
Вариант #2:
$authUri = 'https://accounts.google.com/ServiceLoginAuth'
$gasUri = 'https://script.google.com/macros/s/AKfycbyKvED90DogevP_vBIbTnwQOp2f6kD-MhBgDOYAcl8o6WZDKT97/exec'
$timeout = 10
$email = 'mymail@gmail.com'
$pass = 'mypass'
try {
$auth = Invoke-WebRequest -Uri $authUri -TimeoutSec $timeout -SessionVariable session
$form = $auth.Forms[0]
$form.Fields['Email'] = $email
$form.Fields['Passwd'] = $pass
Invoke-WebRequest -Uri $form.Action -TimeoutSec $timeout -WebSession $session -Method Post -Body $form.Fields | Out-Null
} catch {
Write-Host 'Authentication error!'
exit
}
$res = Invoke-WebRequest -Uri $gasUri -TimeoutSec $timeout -WebSession $session
if ($res.StatusCode -eq 200) {
Write-Host $res.Content
}
Вот как-то так.

Комментариев нет:
Отправить комментарий
Комментарий будет опубликован после модерации