Способы авторизации, рассмотренные далее, могут пригодиться если к примеру необходимо периодически отправлять какие-нибудь данные, либо просто напоминать о себе для того, чтобы преодолеть квоту на общее время выполнения триггеров, из операционной системы 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 }
Вот как-то так.
Комментариев нет:
Отправить комментарий
Комментарий будет опубликован после модерации