Как загрузить видео на YouTube с сервера после входа в приложение iOS? - PullRequest
0 голосов
/ 20 марта 2020

У меня есть приложение iOS, которое регистрирует пользователя в Google и получает токен доступа и refre sh токен. Затем он записывает видео и загружает его на какой-либо сервер (Python 3.6). Я хочу, чтобы сервер начал загружать файл на YouTube, даже если приложение не запущено, используя токен доступа, полученный ранее. У кого-нибудь есть пример, как это сделать?

Я попытался передать токен доступа на сервер. Если я использую его для channels.list API, учетные данные просты и требуют только access_token:

credentials = google.oauth2.credentials.Credentials(access_token)

Но для операции YouTube videos.insert (загрузка) этого недостаточно, утверждая, что мне нужен также client_id, client secret, token_uri, refre sh token:

youtube.videos().insert(...) # repsonse is:
google.auth.exceptions.RefreshError: The credentials do not contain the necessary fields need to refresh the access token. You must specify refresh_token, token_uri, client_id, and client_secret.

Если я правильно понимаю, разные клиенты могут совместно использовать токены доступа, предполагая, что они являются частью одного и того же проекта Google, как объяснено 1012 *. Но на практике я не могу заставить его работать, и получаю ошибку unauthorized_client при вызове videos.insert с сервера, учитывая какой-то выделенный сервер client_id / secret:

credentials = google.oauth2.credentials.Credentials(access_token,
    token_uri=options.token_uri,
    refresh_token=refresh_token,
    client_id=client_id,
    client_secret=client_secret)
youtube.videos().insert(...) # repsonse is:
google.auth.exceptions.RefreshError: ('unauthorized_client: Unauthorized', '{\n  "error": "unauthorized_client",\n  "error_description": "Unauthorized"\n}')

Если мой сервер использует то же самое идентификатор клиента в качестве клиента (без использования секрета клиента), загрузка прошла успешно. Это ожидаемый способ делать вещи? Я надеялся, что у сервера может быть свой собственный идентификатор клиента / секрет и что он будет работать с токеном доступа, предоставленным приложением iOS ...

...