Powershell Kullanarak Google GSuite API lere erişim

Google Project Console üzerine bağlanıp yeni proje oluştur diyerek ilk adımımızı gerçekleştirelim.

https://console.developers.google.com/iam-admin/projects?

İsmine Powershell diyorum,

Create Project

Proje oluştuktan sonra, sol tarafta bulunan Navigation Menü üzerinden APIs & Services e giriş yapıp, Enabled APIs & services menüsü altından + Enable APIS And Services e giriş yapalım. Kullanmak istediğimiz, ihtiyacımız olan API yi enable duruma getirelim.

APIs & Services

Admin SDK API kullanımını gerçekleştireceğim. Search bar üzerinden direk aratıp üzerine tıklayip aktifleştirme işlemini gerçekleştirelim.

API Library
Admin SDK API Status
Admin SDK Api Enabled

API aktifleştirme işlemini gerçekleştirdikten sonra sol menüde bulunan Credentials alanına tıklayalım.

Açılan sayfa üzerinden Create Credentials diyerek kimlik oluşturalım.

Create Credentials
Create OAuth client ID

OAuth Client ID seçeneğine tıklayalım. Açılan menüden Configure Consent Screen diyelim,

Create OAuth clientID

Açılan sayfa üzerinden External seçeneğini seçerek devam ediyorum,

OAuth consent screen

Buralarda çok takılmamıza gerek kalmayacak gerek gördüğünüz alanları dolduralım,

App Information 1

Save and Continue diyerek ilerleyelim,

App Information 2

Kullanmak istedigimiz scope bilgilerini buradan seçebiliriz, ilerleyen süreçte de seçeceğiz ancak buradan da aktif edebiliriz. Admin SDK ile ilgili olan bir kaç scope seçelim.

select scope

Scope seçimi sonrası save and continue diyerek devam edelim.

Scope selection

Test User alanını kaydet diyerek geçiyorum ve summary alanında yaptığımız işlemlerin özet bilgisi çıkmakta. İşlemleri gördükten sonra sol taraftan Credentials alanına tıklayalım.

Test Users panel
Summary

Hızlıca projemizde yapacağımız işlemleri doldurduktan sonra Credential oluşturmaya dönelim.

Create Credentials

Application Type alanı Web application seçilip, name alanını doldurup create diyerek oluşturma işlemini tamamlayalım. Ayrıca Authorized redirects URLs alanına aşağıdaki URL bilgisini girelim.

https://developers.google.com/oauthplayground
Credentials informations

Client ID ve Client Secret bilgilerini kaydedelim bir kenara.

Bu adım sonrasında Ouath Playground sayfasına giriş yapalım,

https://developers.google.com/oauthplayground/

ClientID ve Client Secret bilgilerimizi Powershell ile sürekli girmemek için Projemize kayıt edelm. Sağ üst köşede bulunan çarka tıklayip “user your own OAuth credentials” seçeneğine tıklayalım ve açılan alana ClientID ve Secret bilgisini girelim.

İlgili bilgileri girdikten sonra sekme altında bulunan close alanına tıklayip sağ tarafta bulunan API’ler altında ihtiyacımız olan scopeları seçelim. Ben Kullanıcı ve gruplar üzerinde işlem yapacağım için ilgili scopeları seçiyorum.

Authorize APIs seçeneğine seçerek bu API lere erişim için bizden bir onay sayfasına yönleneceğiz. Burada yetkili olan Admin hesabı ile işlemleri onaylamamız gerekmektedir.

Onay sonrasında Authorization code verecek sistem bize, kenara kaydedelim. Ondan sonra Exchange authorization code for tokens diyerek Refresh token ve Access token bilgisini alıp kenara kaydedelim tekrardan.

Bu işlemde tamamlandıktan sonra artık Powershell’e giriş yapabiliriz 🙂

Aşağıdaki alanı powershellimizin en üstüne yapıştıralım. ClientID, Secret alanını ilk kimlik bilgileri oluşturduğumuz alanda ki bilgileri girelim. RefreshToken alanını ise yukarıda ki ekranda aldığımız bilgiyi girelim.

access_token saatlik kullanım hakkı vermek ile birlikte, refresh_token ise biz bir sonraki parola değiştirme işlemine kadar ilgili token ile çalışabilmemize müsade edecek.

$ClientID = "20744203XXXXXXXXXXXXXXXrcontent.com";
$Secret = "GOCSPXXXXXXXXXXXXaTVbydLbg";
$RedirectURI = "urn:ietf:wg:oauth:2.0:oob";
$RefreshToken = "1//0XXXXXXXXXXXXXXXXXXKC2_OtJxaInZBC3xV7VSixSI-EajQ";

$RefreshTokenParams = @{
client_id=$clientId;
client_secret=$secret;
refresh_token=$refreshToken;
grant_type='refresh_token';
}

$RefreshedToken = Invoke-WebRequest -Uri "https://accounts.google.com/o/oauth2/token" -Method POST -Body $refreshTokenParams | ConvertFrom-Json

$AccessToken = $refreshedToken.access_token

$pagetoken = $null

Yukarıdaki adımlar ile kimlik doğrulama işlemlerini gerçekleştiriyoruz, bir saat sonrası refresh token ile yeni token otomatik olarak oluşmakta ve bizde sorun yaşamadan kimlik doğrulama işlemlerini gerçekleştiriyoruz.

Authentication işlemi sonrası benim işlemlerim Google Workspace üzerine olduğu için aşağıdaki URL ile Request taleplerimi çağıracağım. XXXX alana Gsuite customerID girilmesi gerekmektedir. Bu bilgiyi admin.google.com a giriş yapıp, Account settings alanı altında bulunan Customer ID de gözüken bilgiyi girmemiz gerekmektedir.

 $Request = Invoke-RestMethod -Uri "https://www.googleapis.com/admin/directory/v1/users?customer=XXXX&maxResults=500&orderBy=email&pageToken=$pagetoken&access_token=$accesstoken" -Method GET -ContentType 'application/json'

Aşağıdaki alan ile işlemi tamamlamış oluyoruz. Bundan sonraki süreç bizlerin powershell yetkinliği ile ilerleyecektir.

$ClientID = "20744203XXXXXXXXXXXXXXXrcontent.com";
$Secret = "GOCSPXXXXXXXXXXXXaTVbydLbg";
$RedirectURI = "urn:ietf:wg:oauth:2.0:oob";
$RefreshToken = "1//0XXXXXXXXXXXXXXXXXXKC2_OtJxaInZBC3xV7VSixSI-EajQ";

$RefreshTokenParams = @{
client_id=$clientId;
client_secret=$secret;
refresh_token=$refreshToken;
grant_type='refresh_token';
}

$RefreshedToken = Invoke-WebRequest -Uri "https://accounts.google.com/o/oauth2/token" -Method POST -Body $refreshTokenParams | ConvertFrom-Json

$AccessToken = $refreshedToken.access_token

$pagetoken = $null

 $Request = Invoke-RestMethod -Uri "https://www.googleapis.com/admin/directory/v1/users?customer=XXXX&maxResults=500&orderBy=email&pageToken=$pagetoken&access_token=$accesstoken" -Method GET -ContentType 'application/json'

Aşağıda suspend olan kullanıcılarımı ögrenmek için bir sorgu yazdım. Biraz daha bilgi vermek gerekirse Request alanını sonradan neden do while döngüsü içerisine aldım. Requesti do while dışında çalıştırdığımda bildigim halde daha az kullanıcı çıktı olarak verildi. Burada API bize bir seferde belirli bir sayı verdiğini görüyoruz. Bu işlemin önüne geçmek için pagetoken işlemini do while işlemine sokarak son adıma kadar pagetoken do while içerisinde tamamlanmasını sağlayacaktır.

Umarım faydalı olmuştur,

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Scroll to Top