#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 может быть более полезным в вашей ситуации.