Скрипт календаря Google Python на Raspberry Pi требует периодической повторной аутентификации (вопрос начинающего, извинPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Скрипт календаря Google Python на Raspberry Pi требует периодической повторной аутентификации (вопрос начинающего, извин

Сообщение Anonymous »

У меня есть сценарий Python, работающий на Raspberry Pi, который получает события Google Calendar (используя Google-Api-Python-Client и Google-Auth-Oauthlib) и отображает их на дисплее электронной бумаги WaveShare. Скрипт (Calendara2.py) работает автоматически через Cron (@reboot, 06:00, 13:00, 19:00), используя сценарий обертки, который активирует виртуальную среду Python (venv). < /P>
Проблем токен. Pickle). Он успешно использует токен обновления в течение некоторого времени. Однако после периода (кажется, дни или, может быть, неделю), он перестает работать и требует, чтобы я снова запустил полный процесс аутентификации ручного управления, чтобы восстановить токен. Я пытаюсь понять, почему токен обновления перестает работать или почему необходима повторная аутентификация. Тем не менее, основной проблемой, которую мне нужно решить, является периодическая необходимость вручную повторно аутифицировать с нуля. < /P>
Логика аутентификации (внутренняя основная функция календара2.py): < /p>
Это кодовый блок, выполненный в начале основного () для обработки кредитов: < /p>
< /p> < /p>


what abled of Main () < /p>
import os
import pickle
import logging
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from google.auth.exceptions import RefreshError

# SCOPES defined earlier as: ['https://www.googleapis.com/auth/calendar.readonly']

creds = None
# Carica token esistente
if os.path.exists('token.pickle'):
try:
with open('token.pickle', 'rb') as token:
creds = pickle.load(token)
logging.debug("File token.pickle caricato.")
except Exception as e:
logging.error(f"Errore nel caricare token.pickle: {e}. Verrà tentata nuova autenticazione.")
creds = None

# Se non valido, prova a refreshare
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token: # Check if refresh possible
try:
logging.info("Tentativo di refresh del token Google...")
creds.refresh(Request()) # Perform refresh
# Salva il token rinfrescato
with open('token.pickle', 'wb') as token: # Save refreshed
pickle.dump(creds, token)
logging.info("Token rinfrescato e salvato.")
except RefreshError as e: # Handle specific refresh failure
logging.error(f"Errore durante il refresh del token: {e}")
logging.error("Impossibile rinfrescare il token. Eseguire 'autentica.py' separatamente.")
# In a real scenario, the script would exit here (e.g., return from main)
# For Stack Overflow: Indicate script failure here
print("SCRIPT EXITING DUE TO REFRESH ERROR")
exit() # Simulate exit for clarity
except Exception as e: # Handle other refresh/save errors
logging.error(f"Errore generico durante il refresh: {e}", exc_info=True)
# In a real scenario, the script would exit here
print("SCRIPT EXITING DUE TO GENERIC REFRESH ERROR")
exit() # Simulate exit for clarity
else: # Handle cases where refresh is not possible
# This path is taken if token.pickle doesn't exist,
# is invalid for other reasons, or lacks a refresh token.
logging.error("File token.pickle non trovato o invalido senza refresh token.")
logging.error("Eseguire lo script 'autentica.py' separatamente per autenticarsi.")
# In a real scenario, the script would exit here
print("SCRIPT EXITING DUE TO MISSING/INVALID TOKEN")
exit() # Simulate exit for clarity

# If we reach here, creds should be valid
# Proceed to build service...
# service = build('calendar', 'v3', credentials=creds)
# ... rest of script
< /code>
На основании моего использования и проверки: < /p>
Я не отозвал доступ вручную в настройках своей учетной записи Google.
Я не менял пароль своей учетной записи Google.
Script работает несколько раз в день, поэтому этот токен часто используется, и это не только протоко Поэтому я не должен нажимать на пределы токенов обновления.
Недавно не было внесено изменений в настройку по областям или конфигурации согласия OAuth. "Тестирование". Я не нажимал на «публикацию приложения», так как я не собираюсь использовать его использовать его. Может ли статус «тестирования» приложения быть основной причиной, даже для личного использования, заставляя токен обновления истекать или в конечном итоге стать недействительным (например, через 7 дней), вынуждая повторную аутентификацию, несмотря на непосредственные неудачи, иногда показывающиеся как срок службы в журналах? Каков рекомендуемый подход для долгосрочной стабильной аутентификации для такого сценария личного использования? Запросы, подушка, Waveshare-epd
racope: https://www.googleapis.com/auth/calendar.readonly
Спасибо за любые идеи!

Подробнее здесь: https://stackoverflow.com/questions/795 ... henticatio
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Google Picker API в приложении UWP требует постоянной повторной аутентификации
    Anonymous » » в форуме C#
    0 Ответы
    39 Просмотры
    Последнее сообщение Anonymous
  • Лучший курс Python в Коимбаторе – от начинающего до продвинутого уровня»
    Anonymous » » в форуме Javascript
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Хорошо ли для начинающего уровня? [закрыто]
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Найдите время следующего выполнения периодической задачи в Celery Beat
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Получение периодической ошибки InterfaceError(0, '') в Django3.2 с MySQL5.7
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»