Я написал небольшое приложение на Python, которое будет останавливать и создавать трансляцию через API YouTube в определенное время.
Все работает нормально, но токен создается при первом запуске или когда токен не существует, когда приложение срок действия start истекает через несколько дней.
Токен обновления включен, но через несколько дней его не удается обновить.
Мне хотелось бы войти в систему только один раз и просто разрешите обновить токен.
Вот моя функция входа
SCOPES = ["https://www.googleapis.com/auth/youtube"]
...
...
def _authenticate(self, create_new_token: bool = False):
try:
credentials = None
dirname = os.path.dirname(__file__)
token_filename = os.path.join(dirname, self.TOKEN_FILE)
if os.path.exists(token_filename): # do we have a token file allready?
credentials = Credentials.from_authorized_user_file(
token_filename, self.SCOPES
)
if create_new_token:
credentials = None # will force to have to login again and create a new token file
if (
not credentials or not credentials.valid
): # do we have no token or is the token no longer valid?
if (
credentials and credentials.expired and credentials.refresh_token
): # is the token expired?
try:
self.logger.debug("Token expired. Attempting to refresh...")
credentials.refresh(Request())
self.logger.debug("Token successfully refreshed.")
except Exception as e:
self.logger.error(f"Error renewing token: {e}")
raise e
else:
try:
dirname = os.path.dirname(__file__)
filename = os.path.join(
dirname,
self.config[self.CONF_YOUTUBE_SETTINGS][
self.CONF_CREDENTIALS_FILE
],
)
flow = InstalledAppFlow.from_client_secrets_file(
filename,
self.SCOPES,
)
credentials = flow.run_local_server(
port=0, access_type="offline", prompt="consent"
)
except Exception as e:
self.logger.error(
f"Failed to login, maybe the credentials file does not exist? `{filename}` Error was: {e}"
)
raise e
try:
with open(token_filename, "w") as token:
token.write(credentials.to_json())
self.logger.info(
f"Token was succefully writen to token file `{token_filename}`"
)
except Exception as e:
self.logger.error(
f"Failed to login, maybe the credentials file does not exist? `{token_filename}` Error was: {e}"
)
raise e
self.youtube = build("youtube", "v3", credentials=credentials)
return self.youtube
except Exception as e:
self.logger.error(f"Failed to authenticate: {str(e)}")
return None
Вот несколько журналов моего скрипта Python:
Успешное обновление токена
2025-01-13 23:59:02,157 - DEBUG - Token expired. Attempting to refresh...
2025-01-13 23:59:02,157 - DEBUG - Making request: POST https://oauth2.googleapis.com/token
2025-01-13 23:59:02,159 - DEBUG - Starting new HTTPS connection (1): oauth2.googleapis.com:443
2025-01-13 23:59:02,584 - DEBUG - https://oauth2.googleapis.com:443 "POST /token HTTP/1.1" 200 None
2025-01-13 23:59:02,584 - DEBUG - Token successfully refreshed.
2025-01-13 23:59:02,585 - INFO - Token was succefully writen to token file `/home/My/youtube-manager/token.secret`
2025-01-13 23:59:02,587 - INFO - file_cache is only supported with oauth2client
Подробнее здесь: https://stackoverflow.com/questions/793 ... a-few-days
Срок действия токена API YouTube истекает через несколько дней ⇐ Python
Программы на Python
-
Anonymous
1736925480
Anonymous
Я написал небольшое приложение на Python, которое будет останавливать и создавать трансляцию через API YouTube в определенное время.
Все работает нормально, но токен создается при первом запуске или когда токен не существует, когда приложение срок действия start истекает через несколько дней.
Токен обновления включен, но через несколько дней его не удается обновить.
Мне хотелось бы войти в систему только один раз и просто разрешите обновить токен.
Вот моя функция входа
SCOPES = ["https://www.googleapis.com/auth/youtube"]
...
...
def _authenticate(self, create_new_token: bool = False):
try:
credentials = None
dirname = os.path.dirname(__file__)
token_filename = os.path.join(dirname, self.TOKEN_FILE)
if os.path.exists(token_filename): # do we have a token file allready?
credentials = Credentials.from_authorized_user_file(
token_filename, self.SCOPES
)
if create_new_token:
credentials = None # will force to have to login again and create a new token file
if (
not credentials or not credentials.valid
): # do we have no token or is the token no longer valid?
if (
credentials and credentials.expired and credentials.refresh_token
): # is the token expired?
try:
self.logger.debug("Token expired. Attempting to refresh...")
credentials.refresh(Request())
self.logger.debug("Token successfully refreshed.")
except Exception as e:
self.logger.error(f"Error renewing token: {e}")
raise e
else:
try:
dirname = os.path.dirname(__file__)
filename = os.path.join(
dirname,
self.config[self.CONF_YOUTUBE_SETTINGS][
self.CONF_CREDENTIALS_FILE
],
)
flow = InstalledAppFlow.from_client_secrets_file(
filename,
self.SCOPES,
)
credentials = flow.run_local_server(
port=0, access_type="offline", prompt="consent"
)
except Exception as e:
self.logger.error(
f"Failed to login, maybe the credentials file does not exist? `{filename}` Error was: {e}"
)
raise e
try:
with open(token_filename, "w") as token:
token.write(credentials.to_json())
self.logger.info(
f"Token was succefully writen to token file `{token_filename}`"
)
except Exception as e:
self.logger.error(
f"Failed to login, maybe the credentials file does not exist? `{token_filename}` Error was: {e}"
)
raise e
self.youtube = build("youtube", "v3", credentials=credentials)
return self.youtube
except Exception as e:
self.logger.error(f"Failed to authenticate: {str(e)}")
return None
Вот несколько журналов моего скрипта Python:
Успешное обновление токена
2025-01-13 23:59:02,157 - DEBUG - Token expired. Attempting to refresh...
2025-01-13 23:59:02,157 - DEBUG - Making request: POST https://oauth2.googleapis.com/token
2025-01-13 23:59:02,159 - DEBUG - Starting new HTTPS connection (1): oauth2.googleapis.com:443
2025-01-13 23:59:02,584 - DEBUG - https://oauth2.googleapis.com:443 "POST /token HTTP/1.1" 200 None
2025-01-13 23:59:02,584 - DEBUG - Token successfully refreshed.
2025-01-13 23:59:02,585 - INFO - Token was succefully writen to token file `/home/My/youtube-manager/token.secret`
2025-01-13 23:59:02,587 - INFO - file_cache is only supported with oauth2client
Подробнее здесь: [url]https://stackoverflow.com/questions/79356808/youtube-api-token-expires-after-a-few-days[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия