Сохранение токена доступа к Youtube Data API в настольном приложении Python - PullRequest
0 голосов
/ 28 мая 2020

У меня есть приложение Python, которое обращается к Youtube-Data-API v3.

После того, как программа работает в течение часа, она выдает ошибку, предполагающую, что срок действия токена доступа истек.

Как я могу сохранить токен в течение более длительного периода?

Ответы [ 2 ]

0 голосов
/ 28 мая 2020

Теперь можно продлить время для access token. Срок годности истекает через час. Единственный способ использовать токен - получить новый токен, используя refresh_token, предоставленный api.

Сначала вы получите автономный токен, установив access_type на offine при аутентификации пользователя.

{
    'response_type': 'code',
    'client_id': 'client_id',
    'redirect_uri': '...',
    'access_type':'offline',
    'scope': 'https://www.googleapis.com/auth/youtube.readonly',
}

вы получите refresh_token, access_token, id_token вместе с expiry и некоторые другие поля, которые вы можете сохранить в своей базе данных и при необходимости получить позже.

Перед использованием access_token вы проверяете, действителен ли он

creds = google.oauth2.credentials.Credentials(access_token,refresh_token=refresh_token,id_token=id_token,token_uri=token_uri,client_id=client_id,client_secret=client_secret,scopes=scopes,expiry=expirytime)
if creds.valid == False:
  // Refresh to get the new token
  req =google.auth.transport.requests.Request()
  creds.refresh(req)
  // Now Save new Credentials from "creds" so that you can use later.

После проверки access_token теперь вы можете запросить youtube data api запросов

youtube = googleapiclient.discovery.build(
    "youtube", "v3",credentials=creds)
req = youtube.videos().getRating(id="xxxxxxxxx")
resp =req.execute()
0 голосов
/ 28 мая 2020

Когда вы создаете учетные данные O-Auth2, вам нужно выбрать «Веб-приложение», которое, я думаю, вы пытаетесь создать. (Веб-сайт, правильно?).

Параметр «Desktop-App» предназначен для создания настольного приложения, а не веб-сайта.

Настольные приложения и веб-приложения обрабатывают uris перенаправления иначе, что и является причиной вашей проблемы.

...