У меня странная проблема около 2 недель. Мой python скрипт постоянно (каждые 5 минут) запрашивает API google для пользователей gsuite. Я хотел бы найти пользователей, у которых включена двухфакторная аутентификация (isEnrolledIn2Sv). К сожалению, когда пользователь включает 2FA, мой скрипт возвращает isEnrolledIn2Sv = True только через несколько часов.
Когда я спрашиваю его у gam ( https://github.com/jay0lee/GAM) получает правильный ответ немедленно.
Что происходит? Какой-то кеш? Почему Google возвращает мне не актуальные данные в течение нескольких часов? Возможно, в моих версиях библиотеки python есть ошибки?
Мой python код:
from google.oauth2 import service_account
import googleapiclient.discovery
...
...
...
#inside class:
def run(self):
log("Start no2faMonitor ")
while (True):
log("checking no2fa list")
self.get_google_token()
self.ask_google_user()
log("Users in no2fa with 2-step verification: {}".format(len(self.users)))
for u in self.users:
self.send_notify(u)
time.sleep(274)
#---------------------------------------------------------------------------------
def get_google_token(self):
credentials = service_account.Credentials.from_service_account_file(config.ServiceAccountFile, scopes=config.GoogleScopes).with_subject(config.SubjectAccount)
self.directory = googleapiclient.discovery.build('admin', 'directory_v1', credentials=credentials)
#---------------------------------------------------------------------------------
def ask_google_user(self):
results = self.directory.users().list(customer="my_customer", query="orgUnitPath=/no2fa", maxResults=500).execute()
self.userdata = json.loads(json.dumps(results))
for element in self.userdata['users']:
log("user: {}, 2fa: {}".format(element['primaryEmail'], element['isEnrolledIn2Sv']))
...
...
...
элемент ['isEnrolledIn2Sv'] содержит "False" для пользователей с включенным 2FA.
**pip3 list | grep google**
google 2.0.1
google-api-python-client 1.7.4
google-auth 1.5.1
google-auth-httplib2 0.0.3
Примерно через 2 недели все прошло нормально, хорошие ответы я получил через 5 минут