Mam problemy z używaniem nowego pakietu Google Admin SDK. W szczególności Directory API używający Oauth2. Myślę, że już prawie jestem, ale utknąłem, próbując odzyskać dane o użytkownikach za pomocą interfejsu Directory API (używam domeny Google Education Edition).Google Admin API używający Oauth2 do konta usługi (wersja edukacyjna) - błąd 403
Zasadniczo to, co próbuję zrobić, to napisanie skryptu python, który rezerwuje lub wycofuje użytkowników na podstawie ich statusu rejestracji zarządzanego przez naszą AD. Mam skrypt, który robi to za pomocą Oauth1, ale chcę go zaktualizować, aby używać Oauth2.
Oto fragment kodu na podstawie niektórych przykładów, które znalazłem.
f = file('test_key.p12', 'rb')
key = f.read()
f.close()
credentials = SignedJwtAssertionCredentials(
'[email protected]',
key,
scope= 'https://www.googleapis.com/auth/admin.directory.user')
http = httplib2.Http()
http = credentials.authorize(http)
service = build(serviceName='admin', version='directory_v1', http=http)
lists = service.users().get(userKey='[email protected]').execute(http=http)
pprint.pprint(lists)
Ten fragment kodu wygląda na poprawny, ale kiedy próbuję wykonać zapytanie, pojawia się błąd 403.
BŁĄD: https://www.googleapis.com/admin/directory/v1/users/[email protected]?alt=json powrócił "nie jest upoważniony do dostępu do tego zasobu/API">
Moja pierwsza myśl była, ponieważ nie włączałem tego interfejsu API na konsoli administratorów (Google API's console), ale mam. (Właściwie to włączyłem Admin SDK, a nie Directory API, ponieważ nie ma włączonego interfejsu Directory API i widzę, że jest to część pakietu SDK administratora, który by działał?).
Czy jest jeszcze jeden krok, którego mi brakuje, czy gdzieś popełniłem głupią pomyłkę?
Czy to wymyśliłeś? Zastanawiam się, czy Directory Directory (a.k.a. Admin SDK API), w szczególności, może być używany z kontem usługi i OAuth 2.0. (Wiem, że inne interfejsy API mogą.) Mam wrażenie, że może to zrobić z OAuth 1.0, ale jeszcze tego nie próbowałem. –
@EricWalker - Tak, patrz komentarze poniżej. – Bruce