как получить токены доступа из токена обновления? истекает ли срок действия токена обновления?

#python #google-api #python-requests #google-drive-api

Вопрос:

Я пытаюсь создать скрипт на python, который принимает файл (.csv с маркерами доступа и файлом) в качестве входных данных и загружает этот файл на несколько дисков Google, маркеры доступа которых находятся в этом файле csv, но через некоторое время срок действия маркеров доступа истекает, и я должен получить их снова…просто увидел, что есть что-то под названием обновить, и оно обновляет маркер доступа

Можно ли это сделать с помощью скрипта python, пожалуйста, объясните.

Истекает ли срок действия токена обновления?

 import json
import requests
import pandas as pd
headers = {}
para = {
    "name": "update",
}
files = {
    'data': ('metadata', json.dumps(para), 'application/json; charset=UTF-8'),
    'file': open("./update.txt", "rb")
}
tokens = pd.read_csv('tokens.csv')
for i in tokens.token:
    headers={"Authorization": i}
    r = requests.post(
        "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart",
        headers=headers,
        files=files
    )
    print(r.text)
 

Комментарии:

1. вам нужно предоставить какой-то код или рабочий пример, чтобы другие могли точно ответить

2. Я добавил код, пожалуйста, проверьте

3. чтобы ответить на ваш вопрос, срок действия токенов доступа истекает, вам необходимо периодически получать новые

4. могу ли я сделать это с помощью скрипта python, не заходя в консоль Google api?

5. да, вам, вероятно, придется сделать запрос API, чтобы получить новый токен, вам нужно будет найти документацию, относящуюся к тому, что вы используете

Ответ №1:

Чтобы иметь возможность получить новое access_token программное обеспечение с помощью a refresh_token , вы должны были установить access_type значение offline при перенаправлении пользователя на сервер Google OAuth 2.0.

Если вы это сделали, вы можете получить новый access_token , если выполните следующий POST запрос на https://oauth2.googleapis.com/token :

 POST /token HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=your_client_idamp;
client_secret=your_client_secretamp;
refresh_token=refresh_tokenamp;
grant_type=refresh_token
 

Соответствующий ответ был бы примерно таким:

 {
  "access_token": "1/fFAGRNJru1FTz70BzhT3Zg",
  "expires_in": 3920,
  "scope": "https://www.googleapis.com/auth/drive",
  "token_type": "Bearer"
}
 

Примечание:

Вы можете найти фрагменты кода для нескольких языков в приведенной ниже ссылке, включая Python, но, учитывая, что вы не используете библиотеку Python, я думаю, что предоставленный мной фрагмент HTTP/REST может быть более полезным в вашей ситуации.

Ссылка: