Google Workspace Directory API

Hali!

 

Adott egy Google Workspace, ahol az lenne a cél, hogy automatizáltan tudjunk felvenni embereket illetve törölni őket egy csoportból (nem Google Groups, sima terjesztési).

 

Követtem a leírást,

https://developers.google.com/admin-sdk/directory/v1/guides/manage-grou…

csináltam projektet a Cloud-on, engedélyeztem az admin SDK API-t, ám utána nem jutok tovább. Hogyan kéne cURL kompatibilisen megoldani a problémát, hogy tesztelés után PHP-ba lehessen rakni?

 

Vagy teljesen rossz az irány amerre indultam? Ezen az OAuth bohóckodáson nem tudok túlvergődni. A Google

https://github.com/google/oauth2l

megoldása szintén nem sokat ír, mert

private key should be a PEM or plain PKCS1 or PKCS8; parse error: asn1: syntax error: sequence truncated

hibát dobál, pedig a cloud-ból leszedett secret van neki beadva. Az már csak hab a tortán, hogy sírt egy type-ért, azt meg kézzel kellett beírni a secret.json-ba egy GitHub issue alapján...

 

Ha valaki tud megoldást előre is köszönöm.

Hozzászólások

Köszi! Ami itt még nem világos, hogy a példában autentikálni kell böngészővel. Ez egyszer nyilván nem probléma, viszont hosszútávon felhasználói interakció nélkül szeretnénk használni, ugyanis ha a felhasználó megerősíti a mail címét amit megad nálunk, akkor auto szeretnénk feliratkoztatni, és ha tőle kérünk is Google belépést, az nem admin account lesz. Erre találtam a service account-ot, de az se tűnik 100%-os megoldásnak.

TheAdam

A példa authorization code grant oauth flow-t használ, amit akarsz arra a service account jó irány. ha az emberek alapból workspace-ed alá tartoznak már akkor pedig:

https://developers.google.com/admin-sdk/directory/v1/guides/delegation#…

Köszi! Próbálkoztam ma, de sajnos elakadtam. A cloud-on tehát be van kapcsolva a workspace admin SDK, illetve service account-ot is csináltam, amit felvettem a projekthez mint owner, h legyen minden joga. Python-nal próbáltam még meg, de akár azzal nézem, akár oauth2l-lel, sikerül ugyan belépjen a service account-ba, de a csoporttagokat már nem tudja lekérni. A doménre természetesen felvettem a service account ID-jét és engedélyeztem neki a megfelelő scope-okat, még sem megy. Gúgliztam, de csak olyanokat találtam, h ellenőrizzem, h a doménre rendesen delegálva van-e, de delegálva van, eztán jött, h kínomban felvettem külön a project-hez is a service account-ot. Sajna tippem sincs, hogy merre tudnék továbbhaladni, folyamatod dobálja a 403-akat. Van még esetleg valami ötleted?

TheAdam

> nem tudja lekérni

Ez a hibaüzenet? Vagy van valami konkrétabb?

Tipp: először a saját nevedben próbáld meghívni az API-t, hogy kiderüljön, maga a kérés működik-e. A developers.google.com-on az API referenciáknál szokott lenni olyan kis ablak, ahol rögtön kipróbálhatod böngészőből is.

Ez minden amit kiír. Teszteltem a tesztelős ablakban, az volt nekem is az első tippem, de off sajna.

python qs.py
{
  "error": {
    "code": 403,
    "message": "Not Authorized to access this resource/api",
    "errors": [
      {
        "message": "Not Authorized to access this resource/api",
        "domain": "global",
        "reason": "forbidden"
      }
    ]
  }
}

TheAdam

Nehéz szülés volt, de végül megoldódott. Sajnos sok és káoszos leírása van a Google-nak, de találtam végül működőt, így az eredeti problémát sikerült megoldani, miszerint listáznám egy csoport tagjait workspace-ben, felvennék és törölnék közülük. Mindezt service account-tal, Python-ból és PHP-ból.

Köszönöm mindenkinek a segítséget!

TheAdam

Jogos, ez lemaradt.

 

Nos Python-hoz ezt használtam

https://googleapis.github.io/google-api-python-client/

 

PHP-ban pedig ez segített rettentően sokat

https://github.com/googleapis/google-api-php-client-services/tree/main/…

 

Ahogy az látható az első elég jól van dokumentálva, viszont a második kevésbé. Itt az autentikációt meg lehet oldani (legalább is az én esetemben sikerült) a projekt kezdőoldalán lévő leírással

https://github.com/googleapis/google-api-php-client/

utána pedig a fenntebbi linken lévő - jól öndokumentált - kódokból már el lehet indulni. Python auth-ra meg szerencsére szép számmal vannak példák (legalább is több mint PHP-ra), Stackoverflow sokat segített.

TheAdam