Вы можете использовать Oauth2 для этого, я делал это в прошлом, но вам нужно будет следить за этим.Вам нужно будет авторизовать этот код один раз и сохранить токен обновления.Токены обновления являются долгоживущими, обычно они не имеют срока действия, но ваш код должен иметь возможность связаться с вами, если это произойдет, чтобы вы могли снова его авторизовать.Если вы сохранили токен обновления, вы можете в любое время использовать последний шаг для запроса нового токена доступа.
Oauth2 в основном состоит из трех вызовов.Я могу дать вам HTTP-вызовы, я позволю вам работать с Python Google 3 Legged OAuth2 Flow
Аутентификация и авторизация
Первоевам нужно разрешение пользователя.Для этого вы строите ссылку на сервере авторизации.Это HTTP-запрос на получение, вы можете поместить его в обычное окно браузера, чтобы проверить его.
GET https://accounts.google.com/o/oauth2/auth?client_id={clientid}&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=https://www.googleapis.com/auth/analytics.readonly&response_type=code
Примечание по перенаправлению URI.Если вы запускаете это на сервере или что-то еще, тогда используйте urn:ietf:wg:oauth:2.0:oob
. По сути, он сообщает серверу, чтобы он возвращал код туда, откуда он пришел, если вы используете веб-сайт, вы можете указать URL-адрес страницы, которая будет обрабатываться.ответ.
Если пользователь примет вышеуказанное, у вас будет код авторизации.
Код обмена
Что вам нужно сделать дальшеобменяйте код авторизации, полученный в ответе выше, и запросите токен доступа и токен обновления.Это http post call
POST https://accounts.google.com/o/oauth2/token
code=4/X9lG6uWd8-MMJPElWggHZRzyFKtp.QubAT_P-GEwePvB8fYmgkJzntDnaiAI&client_id={ClientId}&client_secret={ClientSecret}&redirect_uri=urn:ietf:wg:oauth:2.0:oob&grant_type=authorization_code
Параметр body должен быть таким, как я показал, разделенным символом &, а тип содержимого запроса: application/x-www-form-urlencoded
Response
{
"access_token" : "ya29.1.AADtN_VSBMC2Ga2lhxsTKjVQ_ROco8VbD6h01aj4PcKHLm6qvHbNtn-_BIzXMw",
"token_type" : "Bearer",
"expires_in" : 3600,
"refresh_token" : "1/J-3zPA8XR1o_cXebV9sDKn_f5MTqaFhKFxH-3PUPiJ4"
}
Токен доступа можно использовать во всех ваших запросах к API, добавив либо токен носителя заголовка авторизации с токеном доступа, либо отправив access_token = в качестве параметра в ваших запросах.
Обновить токен доступа
Обновить токены являются долгоживущими, они не должны истекать, они могут, поэтому ваш код должен быть в состоянии справиться с этим, но обычно они хороши навсегда.Токены доступа действительны только в течение одного часа, и вам нужно будет запросить новый токен доступа.
POST https://accounts.google.com/o/oauth2/token
client_id={ClientId}&client_secret={ClientSecret}&refresh_token=1/ffYmfI0sjR54Ft9oupubLzrJhD1hZS5tWQcyAvNECCA&grant_type=refresh_token
ответ
{
"access_token" : "ya29.1.AADtN_XK16As2ZHlScqOxGtntIlevNcasMSPwGiE3pe5ANZfrmJTcsI3ZtAjv4sDrPDRnQ",
"token_type" : "Bearer",
"expires_in" : 3600
}