Создание загружаемой ссылки для личного файла, загруженного на диск Google - PullRequest
1 голос
/ 10 октября 2019

Можно ли сгенерировать загружаемую ссылку для личного файла, загруженного на диск Google?

Я пробовал использовать API-интерфейс для файлов и создал ссылку на веб-контент, но она доступна только владельцу. и общие пользователи.

(Ожидается публичная ссылка, которой может поделиться кто угодно)

def file_info_drive(access_token, file_id):
    headers = {'Authorization': 'Bearer ' + access_token, "content-type": "application/json"}
    response = requests.get('https://www.googleapis.com/drive/v2/files/{file_id}', headers=headers)
    response = response.json()

    link = response['webContentLink']
    return link

1 Ответ

1 голос
/ 11 октября 2019
  • Вы хотите, чтобы кто-нибудь загрузил файл, используя webContentLink.
  • Вы хотите использовать Drive API v2.
  • Вы хотите добиться этого, используя модуль запроса сPython.
  • Вы уже смогли загрузить и загрузить файл с помощью Drive API.

Если мое понимание верно, как насчет этой модификации?

Модификацияpoints:

  • Чтобы кто-либо мог загрузить файл, используя webContentLink, необходимо публично поделиться им.
    • В этом измененном сценарии файл является общедоступным с условием {'role': 'reader', 'type': 'anyone', 'withLink': True}. В этом случае пользователи, которым известен URL-адрес, могут загрузить файл.

Модифицированный скрипт:

Когда ваш скрипт модифицирован, он выглядит следующим образом.

def file_info_drive(access_token, file_id):
    headers = {'Authorization': 'Bearer ' + access_token, "content-type": "application/json"}

    # Using the following script, the file is shared publicly. By this, anyone can download the file.
    payload = {'role': 'reader', 'type': 'anyone', 'withLink': True}
    requests.post('https://www.googleapis.com/drive/v2/files/{file_id}/permissions', json=payload, headers=headers)

    response = requests.get('https://www.googleapis.com/drive/v2/files/{file_id}', headers=headers)
    response = response.json()

    link = response['webContentLink']
    return link

Примечание:

  • В этом случае используется метод POST. Поэтому, если возникает ошибка для областей, добавьте в область действия https://www.googleapis.com/auth/drive.

Ссылка:

Если я неправильно понял ваш вопрос, и это было не то направление, которое вы хотите, я прошу прощения.

...