2012-04-21 3 views
9

С момента включения двухфакторной аутентификации (этаночная двухэтапная аутентификация) в Google мой Google export scripts больше не работает. Компьютер проверен и доверен, но как-то сценарии не являются. По сути, каждый раз, когда выполняется задание cron, я получаю новый «код подтверждения Google» и сбой сценария. Я предполагаю, что для проверки подлинности таких скриптов раз и навсегда было бы просто wget или curl, но я не смог найти документацию о том, как это сделать.Как использовать пароль для приложения Google в скрипте?


схемы аутентификации Google прошли через множество итераций, и я не могу больше, кажется, войти, используя curl или mechanicalsoup. Я пробовал использовать URL-адреса, такие как https://accounts.google.com/ServiceLogin?continue=https://calendar.google.com/calendar/exporticalzip&[email protected]&Passwd=application-specific-password, и я всегда перенаправляюсь на страницу входа, как правило, с сообщением «Пожалуйста, используйте свой пароль учетной записи, а не пароль для конкретного приложения».

+2

Вы должны попробовать использовать oauth2 вместо этого старого устаревшего подхода, то есть меньше хлопот с лексем проверки. – Tim

+0

@Tim: Есть ли руководство по использованию этого скрипта? – l0b0

+0

Спецификация на http://tools.ietf.org/html/draft-ietf-oauth-v2-25 показывает, как это сделать. Я думаю, что «завиток» мог бы сделать материал https и позволить вам передавать запросы с помощью «-raw»? Или, может быть, у завитка есть варианты для такого рода вещей? – ams

ответ

0
+0

Я не могу понять, как это сделать из сценария оболочки. A * lot * googling не обнаружил один сценарий оболочки, который, похоже, способен выполнять двухэтапную аутентификацию. – l0b0

+0

Проверьте ссылки - это одноэтапная аутентификация с использованием случайного пароля, предназначенного специально для приложений, которые несовместимы с двухэтапной аутентификацией. – Tgr

+0

«Если вы являетесь разработчиком API Google Apps и используете аутентификацию ClientLogin» - я не знаю, насколько я знаю, [сценарий аутентификации] (https://github.com/l0b0/export/blob/master/GoogleAuth .sh) использует 'ServiceLoginAuth', и просто замена пароля паролем приложения не работает. – l0b0

0

Создание конкретных паролей для работы с моими сценариями, все, что вы делаете, - это создать пароль, а затем в вашем скрипте, где вместо этого у вас есть ваш пароль учетных записей Google.

Смотрите здесь для более на применении специальных паролей:

Application Specific Passwords

Надеется, что это помогает !!

+0

Пробовал это уже, и он не принял запрос. У вас есть пример кода? – l0b0

4

Вы абсолютно уверены, что хотите использовать двухфакторное аутентификационное письмо со сценариями оболочки? Если это так, вам не нужно пытаться заставить ваш компьютер или сценарий «доверять». Вы просто выполняете полный 2-факторный аут при каждом запуске скрипта.

Если цель состоит в том, чтобы пропустить ручной второй коэффициент auth, я бы предложил вместо этого использовать пароль для приложения (как уже было предложено другими ответами). Просто притворитесь, что вы не используете 2-факторное аутентификацию вообще и используете свое реальное имя для входа, но задаете пароль для одного, сгенерированного на https://accounts.google.com/b/0/IssuedAuthSubTokens?hl=en (подстраница https://www.google.com/settings/security).

Цель состоит в том, чтобы установить для конкретного приложения пароль «Имя» значение, имеющее для вас значение. Например, у меня есть пароли с надписью «Pidgin at work», «My Android Phone», «Расширение адресной книги Google Thunderbird» и т. Д. У вас может быть один для «Script and Reader Export Script». Если вы когда-либо считали, что этот пароль для конкретного приложения скомпрометирован («просочился»), просто нажмите ссылку «Отменить» на той же странице, а затем создайте новый пароль для своего скрипта.

Для кода просто используйте последнюю версию, которая работала с Google single factor auth. Обновление:, потому что исходный вопрос использовал URL-адрес https://accounts.google.com/ServiceLogin для запуска входа в сессию, это практически ошибка при входе в браузер. Однако Google официально не поддерживает это, и, поскольку я пишу это, кажется, что с использованием специального пароля для обычного входа в систему будет выведено сообщение об ошибке «Пожалуйста, используйте свой пароль учетной записи, а не пароль для конкретного приложения».

Одна вещь, чтобы понять, что Google 2-factor auth и «доверенный компьютер» состоит в том, что фактическая реализация просто добавляет постоянный файл cookie с истечением 30 дней в ваш браузер. Надежный компьютер не означает, что ваш IP-адрес был доверен или создано другое магическое соединение. Если ваши сценарии не захватывают cookie «доверенного компьютера» из вашего браузера, это не имеет значения, если вы когда-либо отмечали свой компьютер как доверенный.(Форма Google не должна указывать «Помните этот компьютер в течение 30 дней», но «доверяйте этой комбинации браузера и учетной записи пользователя в течение 30 дней (сохраняйте постоянный файл cookie)». Однако, я думаю, это считалось слишком техническим ...)

Обновление: (скопировано из моего комментария ниже) Единственный официально поддерживаемый метод (приложения Server to Server) документируется по адресу https://developers.google.com/accounts/docs/OAuth2ServiceAccount. Для этого требуется OAuth/JWT, кодирующая запрос, и использование закрытого ключа учетной записи службы, созданного по адресу https://code.google.com/apis/console. В качестве альтернативы вы можете использовать аутентификацию ClientLogin (уже устаревшее, лучшее обслуживание усилий до 2015 года).

Если вы решите пойти с OAuth, вы можете захотеть взглянуть на http://blog.yjl.im/2010/05/bash-oauth.html и https://github.com/oxys-net/curl-oauth

+0

Сообщение об ошибке: «Пожалуйста, используйте пароль учетной записи, а не пароль для конкретного приложения». Похоже, что google активно убивает любую поддержку для использования простого входа в пароль после активации 2-факторного входа. Единственный официально поддерживаемый метод (приложения Server to Server) документируется на странице https://developers.google.com/accounts/docs/OAuth2ServiceAccount. Для этого требуется OAuth/JWT кодирование запроса и использование закрытого ключа учетной записи службы, созданного на странице https://code.google.com/apis/console/. В качестве альтернативы вы можете использовать аутентификацию ClientLogin (лучший сервис усилий до 2015 года). –

+1

Если вы решите пойти с OAuth, вы можете посмотреть http://blog.yjl.im/2010/05/bash-oauth.html и https://github.com/oxys-net/curl-oauth –

+0

Это больше не работает, поэтому я ищу другое решение ... – l0b0

Смежные вопросы