Bu dokümanda, müşterilerinizi bilgilendiren push bildirimlerinin nasıl kullanılacağı bir kaynak değişikliğini uygulamalısınız.
Genel Bakış
Admin SDK API, uygulamanızın performansını gösteren push bildirimleri kaynak değişikliğidir. Bu özelliği kullanarak uygulamanızın performansını artırabilirsiniz. Değişip değişmediklerini belirlemek için kaynak sorgulaması ile ilgili ek ağ ve hesaplama maliyetlerini ortadan kaldırmanıza olanak tanır. İzlenen bir kaynak değiştiğinde Admin SDK API, bu durumu kabul edersiniz.
Push bildirimleri kullanmak için iki şey yapmanız gerekir:
Alıcı URL'nizi veya "webhook" geri çağırma alıcınızı ayarlayın.
Bu şu API bildirim mesajlarını işleyen bir HTTPS sunucusudur: bir kaynak değiştiğinde tetiklenir.
İzlemek istediğiniz her kaynak uç noktası için bir bildirim kanalı oluşturun.
Bir kanal, bildirim için yönlendirme bilgilerini belirtiyor mesaj. Kanal oluşturma işleminin bir parçası olarak, kanalınızın bildirimleri almak istiyorsunuz. Bir kanalın kaynağı değiştiğinde Admin SDK API,
POSTolarak bir bildirim mesajı gönderir söz konusu URL'ye istek gönderebilir.
Şu anda Admin SDK API, Etkinlikler kaynağı.
Bildirim kanalları oluşturma
Push bildirimleri istemek için izlemek istediğiniz her kaynak için bir bildirim kanalı oluşturmanız gerekir. Bildirim kanallarınız oluşturulduktan sonra Yönetici SDK API'si, izlenen bir kaynak değiştiğinde uygulamanızı bilgilendirir.
İzleme isteği gönderme
İzlenebilir her Yönetici SDK'sı API kaynağının, aşağıdaki biçimteki bir URI'de ilişkili bir watch yöntemi vardır:
https://www.googleapis.com/API_NAME/API_VERSION/RESOURCE_PATH/watch
Belirli bir kaynakta yapılan değişikliklerle ilgili mesajlar için bildirim kanalı oluşturmak isterseniz kaynağın watch yöntemine bir POST isteği gönderin.
Her bildirim kanalı hem belirli bir kullanıcıyla hem de belirli bir kaynakla (veya kaynak grubuyla) ilişkilendirilir. Mevcut kullanıcı veya hizmet hesabı bu kaynağın sahibi değilse ya da bu kaynağa erişme izni yoksa watch isteği başarılı olmaz.
Örnekler
Activities kaynağı için tüm izleme isteklerinin genel biçimi şudur:
POST https://admin.googleapis.com/admin/reports/v1/activity/users/userKey or all/applications/applicationName/watch
Authorization: Bearer auth_token_for_current_user
Content-Type: application/json
{
"id": "01234567-89ab-cdef-0123456789ab", // Your channel ID.
"type": "web_hook",
"address": "https://mydomain.com/notifications", // Your receiving URL.
...
"token": "target=myApp-myFilesChannelDest", // (Optional) Your channel token.
"payload": true, // (Optional) Whether to include the payload (message body) in notifications.
"expiration": 3600 // (Optional) Your requested channel expiration time.
}Yalnızca belirli etkinlikler, kullanıcılar veya uygulamalarla ilgili bildirimler almak için userKey, applicationName, eventName ve filters parametrelerini kullanabilirsiniz.
Not: Aşağıdaki örneklerde, netlik sağlamak için istek gövdesi atlanmıştır.
Tüm yönetici etkinliklerini izleyin:
POST https://admin.googleapis.com/admin/reports/v1/activity/users/all/applications/admin/watch
Tüm doküman etkinliklerini izleyin:
POST https://admin.googleapis.com/admin/reports/v1/activity/users/all/applications/docs/watch
Belirli bir kullanıcının yönetici etkinliğini izleyin:
POST https://admin.googleapis.com/admin/reports/v1/activity/users/liz@example.com/applications/admin/watch
Kullanıcının şifresini değiştirmek gibi belirli bir etkinlik olup olmadığını kontrol edin:
POST https://admin.googleapis.com/admin/reports/v1/activity/users/all/applications/admin/watch?eventName=CHANGE_PASSWORD
Belirli bir dokümanda yapılan değişiklikleri izleyin:
POST https://admin.googleapis.com/admin/reports/v1/activity/users/all/applications/docs/watch?eventName=EDIT&filters==doc_id=123456abcdef
Zorunlu özellikler
Her watch isteğiyle birlikte şu alanları sağlamanız gerekir:
-
Projenizde bu yeni bildirim kanalını benzersiz şekilde tanımlayan bir
idmülk dizesi. Evrensel olarak benzersiz bir tanımlayıcı (UUID) veya benzer bir benzersiz dize kullanmanızı öneririz. Maksimum uzunluk: 64 karakter.Ayarladığınız kimlik değeri,
X-Goog-Channel-IdHer bildirimin HTTP başlığı size bir mesaj gönderecektir. -
typeözellik dizesi değere ayarlandıweb_hook. -
Şunları dinleyen URL'ye bir
addressözellik dizesi ayarlandı ve bu bildirim kanalındaki bildirimlere yanıt verir. Bu, webhook geri çağırma URL'nizdir ve HTTPS kullanmalıdır.Yönetici SDK'sı API'sinin bu HTTPS adresine bildirim gönderebilmesi için web sunucunuzda geçerli bir SSL sertifikasının yüklü olması gerektiğini unutmayın. Geçersiz sertifikalar şunlardır:
- Kendinden imzalı sertifikalar.
- Güvenilmeyen bir kaynağın imzaladığı sertifikalar.
- İptal edilmiş sertifikalar.
- Konuyla eşleşmeyen sertifikalar ana makine adı.
İsteğe bağlı özellikler
watch isteğinizle birlikte aşağıdaki isteğe bağlı alanları da belirtebilirsiniz:
-
Kanal jetonu olarak kullanılacak rastgele bir dize değerini belirten bir
tokenözelliği. Bildirim kanalı jetonlarını çeşitli amaçlarla kullanabilirsiniz. Örneğin, e-posta adresinize gönderilen her mesajın bildirimin gönderilmediğinden emin olmak için veya iletiyi bu kanalın amacına göre yeniden gönderin. Maksimum uzunluk: 256 karakter.Jeton, uygulamanızın bu kanal için aldığı her bildirim mesajındaki
X-Goog-Channel-TokenHTTP üstbilgisinin içine eklenir.Bildirim kanalı jetonları kullanıyorsanız şunları yapmanızı öneririz:
URL sorgusu gibi genişletilebilir bir kodlama biçimi kullanın parametreleridir. Örnek:
forwardTo=hr&createdBy=mobileOAuth jetonları gibi hassas verileri eklemeyin.
-
expirationözellik dizesi Unix zaman damgası Admin SDK API'nin API'yi kullanmasını istediğiniz tarih ve saati (milisaniye cinsinden) bu bildirim kanalı için mesaj göndermeyi durdur.Bir kanalın geçerlilik süresi varsa bu süre, uygulamanızın bu kanal için aldığı her bildirim mesajına
X-Goog-Channel-ExpirationHTTP başlığının değeri olarak (kullanıcı tarafından okunabilir biçimde) dahil edilir.
İstekle ilgili daha ayrıntılı bilgi için watch yöntemine bakın.
API Referansı'ndaki Etkinlikler kaynağı için geçerlidir.
Yanıtı izleme
watch isteği başarılı bir şekilde bildirim kanalı oluşturursa HTTP 200 OK durum kodu döndürülür.
İzleme yanıtının mesaj gövdesinde, aşağıdaki örnekte gösterildiği gibi, yeni oluşturduğunuz bildirim kanalı hakkında bilgi sağlanır.
{
"kind": "api#channel",
"id": "reportsApiId", // ID you specified for this channel.
"resourceId": "o3hgv1538sdjfh", // ID of the watched resource.
"resourceUri": "https://admin.googleapis.com/admin/reports/v1/activity/userKey/applications/applicationName", // Version-specific ID of the watched resource.
"token": "target=myApp-myFilesChannelDest", // Present only if one was provided.
"expiration": 3600, // Actual expiration time as Unix timestamp (in ms), if applicable.
}İsteğiniz kapsamında gönderdiğiniz özelliklere ek olarak
şunları da içerir: resourceId ve
İzlenen kaynağı belirlemek için resourceUri
bildirim kanalı.
Döndürülen bilgileri başka bir bildirim kanalına aktarabilirsiniz işlemlerinize devam edebilir, örneğin almayı durdurmak istediğinizde bildirimlerine bakın.
Yanıt hakkında daha fazla bilgi için API Referansı'ndaki Etkinlikler kaynağının watch yöntemine bakın.
İletiyi senkronize et
Bir kaynağı izlemek için bildirim kanalı oluşturduktan sonra
Admin SDK API, şunu belirtmek için bir sync mesajı gönderir:
bildirimler başlıyor. X-Goog-Resource-State HTTP
bu iletilerin üstbilgi değeri sync. Ağa bağlı
zamanlama sorunları varsa sync mesajı alabilirsiniz
hem de watch yöntemi yanıtını almadan önce.
sync bildirimini yoksayabilirsiniz ancak bu bildirimi kullanabilirsiniz. Örneğin, Yeşil Ofis projenizde
Bunun için X-Goog-Channel-ID ve
Şuna yapılan çağrıda X-Goog-Resource-ID değer:
bildirim almayı durdur. Ayrıca şunu da kullanabilirsiniz:
hazırlanmak amacıyla bazı başlatma işlemlerinin yapılması için sync bildirim
etkinlikleri takip edebilirsiniz.
Yönetici SDK'sı API'sinin alıcı URL'nize gönderdiği sync mesajlarının biçimi aşağıda gösterilmiştir.
POST https://mydomain.com/notifications // Your receiving URL. X-Goog-Channel-ID: channel-ID-value X-Goog-Channel-Token: channel-token-value X-Goog-Channel-Expiration: expiration-date-and-time // In human-readable format. Present only if the channel expires. X-Goog-Resource-ID: identifier-for-the-watched-resource X-Goog-Resource-URI: version-specific-URI-of-the-watched-resource X-Goog-Resource-State: sync X-Goog-Message-Number: 1
Senkronizasyon mesajlarının X-Goog-Message-Number HTTP başlığı değeri her zaman 1 olur. Bu kanal için takip eden her bildirimde
daha büyük bir ileti numarası; örneğin
sayılar sıralı olmaz.
Bildirim kanallarını yenileme
Bildirim kanalının, bir değere sahip geçerlilik süresi olabilir.
isteğiniz veya herhangi bir Admin SDK API dahili sınırı tarafından belirlenir
veya varsayılan değerler (daha kısıtlayıcı değer kullanılır). Kanalın geçerlilik bitiş tarihi
zamanı (varsa) Unix zaman damgası olarak eklenir.
(milisaniye cinsinden) watch yönteminin döndürdüğü bilgilerde bulunur. Ayrıca,
geçerlilik bitiş tarihi ve saati eklenir (kullanıcılar tarafından okunabilir biçimde)
uygulamanızın bu kanal için aldığı bildirim mesajı
X-Goog-Channel-Expiration HTTP üst bilgisi.
Şu anda bildirim kanallarını otomatik olarak yenileme seçeneği yoktur. Bir kanalın süresi dolmak üzereyse watch yöntemini çağırarak kanalı yeni bir kanalla değiştirmeniz gerekir. Her zaman olduğu gibi,
yeni kanalın id özelliği. Herhangi bir riskin
bir "örtüşme" olması 2 bildirim kanalının 24 saat veya 24 saat uzunluğunda
etkin olduğundan emin olun.
Bildirimleri alma
İzlenen bir kaynak değiştiğinde, uygulamanız
bir bildirim mesajı görebilirsiniz. Admin SDK API bu verileri gönderir
olarak belirttiğiniz URL'ye HTTPS POST istekleri biçiminde gönderilir.
Bu bildirim için address mülk
yardımcı olur.
Bildirim mesajı biçimini yorumlama
Tüm bildirim mesajları bir dizi HTTP üstbilgisini içerir ve
X-Goog- ön ek.
Bazı bildirim türleri şunları da içerebilir:
e-posta mesajı
Üst bilgiler
Admin SDK API tarafından alıcı URL'nize gönderilen bildirim mesajları aşağıdaki HTTP üstbilgilerini içerir:
| Başlık | Açıklama |
|---|---|
| Her zaman mevcut | |
|
Bunu tanımlamak için sağladığınız UUID veya başka bir benzersiz dize bildirim kanalı. |
|
Bu bildirim kanalı için bu mesajı tanımlayan tam sayı. Değer, sync mesaj için her zaman 1 şeklindedir. Mesaj gönder
artacaktır, ancak bu sayılar kanalda daha
sıralı değildir. |
|
İzlenen kaynağı tanımlayan opak bir değer. Bu kimlik, API sürümleri genelinde sabit kalır. |
|
Bildirimi tetikleyen yeni kaynak durumu.
Olası değerler:
sync veya bir etkinlik adı.
|
|
İzlenen kaynak için API sürümüne özgü bir tanımlayıcı. |
| Bazen mevcut | |
|
Bildirim kanalının son geçerlilik tarihi ve saati, biçimi de vardır. Yalnızca tanımlanmışsa mevcuttur. |
|
Uygulamanız tarafından ayarlanan ve bildirim kaynağını doğrulamak için kullanabileceğiniz bildirim kanalı jetonu. Yalnızca şu durumlarda mevcut: tanımlanmıştır. |
Etkinlikler için bildirim mesajları, istek gövdesinde aşağıdaki bilgileri içerir:
| Özellik | Açıklama |
|---|---|
kind |
Bu öğeyi bir etkinlik kaynağı olarak tanımlar. Değer: Sabit dize "admin#reports#activity". |
id |
Etkinlik kaydının benzersiz tanımlayıcısı. |
id.time |
Etkinliğin gerçekleştiği zaman. Değer ISO 8601 tarih ve saat biçimi. Saat tam tarih artı saat, dakika ve saniye cinsinden YYYY-AA-GGTsa:dk:snTZD biçimindedir. Örneğin, 2010-04-05T17:30:04+01:00. |
id.uniqueQualifier |
Birden fazla etkinliğin aynı saate sahip olması durumunda benzersiz niteleyici. |
id.applicationName |
Etkinliğin ait olduğu uygulama adı. Olası değerler şunları içerir: |
id.customerId |
Google Workspace hesabının benzersiz tanımlayıcısı. |
actor |
İşlemi yapan kullanıcı. |
actor.callerType |
Raporda listelenen etkinliği gerçekleştiren yazarın türü. API'nin bu sürümünde callerType, raporda listelenen işlemi gerçekleştiren USER veya OAuth 2LO varlık isteğidir. |
actor.email |
Etkinlikleri bildirilen kullanıcının birincil e-posta adresi. |
actor.profileId |
Kullanıcının benzersiz Google Workspace profil kimliği. |
ownerDomain |
Yönetici Konsolu'nun veya Dokümanlar uygulamasının doküman sahibinin alanı. Bu, raporun etkinliğinden etkilenen alandır. |
ipAddress |
İşlemi yapan kullanıcının IP adresi. Bu, kullanıcının Google Workspace'e giriş yaparken kullandığı İnternet Protokolü (IP) adresidir. Kullanıcının fiziksel konumunu yansıtabilir veya yansıtmayabilir. Örneğin, IP adresi kullanıcının proxy sunucusunun adresi veya sanal özel ağ (VPN) adresi olabilir. API IPv4 ve IPv6'yı destekler. |
events[] |
Rapordaki etkinlik etkinlikleri. |
events[].type |
Etkinlik türü. Yöneticinin değiştirdiği Google Workspace hizmeti veya özelliği, eventName özelliğini kullanarak etkinlikleri tanımlayan type özelliğinde tanımlanır. |
events[].name |
Etkinliğin adı. Bu, API tarafından bildirilen etkinliğin adıdır. Her eventName, API'nin etkinlik türlerine göre düzenlediği belirli bir Google Workspace hizmeti veya özelliğiyle ilgilidir.
Genel olarak eventName istek parametreleri için:
|
events[].parameters[] |
Çeşitli uygulamalar için parametre değer çiftleri. |
events[].parameters[].name |
Parametrenin adı. |
events[].parameters[].value |
Parametrenin dize değeri. |
events[].parameters[].intValue |
Parametrenin tam sayı değeri. |
events[].parameters[].boolValue |
Parametrenin boole değeri. |
Örnekler
Etkinlik kaynağı etkinlikleri için bildirim mesajları genel biçimdedir:
POST https://mydomain.com/notifications // Your receiving URL.
Content-Type: application/json; utf-8
Content-Length: 0
X-Goog-Channel-ID: reportsApiId
X-Goog-Channel-Token: 398348u3tu83ut8uu38
X-Goog-Channel-Expiration: Tue, 29 Oct 2013 20:32:02 GMT
X-Goog-Resource-ID: ret08u3rv24htgh289g
X-Goog-Resource-URI: https://admin.googleapis.com/admin/reports/v1/activity/userKey/applications/applicationName
X-Goog-Resource-State: eventName
X-Goog-Message-Number: 10
{
"kind": "admin#reports#activity",
"id": {
"time": datetime,
"uniqueQualifier": long,
"applicationName": string,
"customerId": string
},
"actor": {
"callerType": string,
"email": string,
"profileId": long
},
"ownerDomain": string,
"ipAddress": string,
"events": [
{
"type": string,
"name": string,
"parameters": [
{
"name": string,
"value": string,
"intValue": long,
"boolValue": boolean
}
]
}
]
}
Yönetici etkinliği örneği:
POST https://mydomain.com/notifications // Your receiving URL.
Content-Type: application/json; utf-8
Content-Length: 596
X-Goog-Channel-ID: reportsApiId
X-Goog-Channel-Token: 245t1234tt83trrt333
X-Goog-Channel-Expiration: Tue, 29 Oct 2013 20:32:02 GMT
X-Goog-Resource-ID: ret987df98743md8g
X-Goog-Resource-URI: https://admin.googleapis.com/admin/reports/v1/activity/users/all/applications/admin?alt=json
X-Goog-Resource-State: CREATE_USER
X-Goog-Message-Number: 23
{
"kind": "admin#reports#activity",
"id": {
"time": "2013-09-10T18:23:35.808Z",
"uniqueQualifier": "-0987654321",
"applicationName": "admin",
"customerId": "ABCD012345"
},
"actor": {
"callerType": "USER",
"email": "admin@example.com",
"profileId": "0123456789987654321"
},
"ownerDomain": "apps-reporting.example.com",
"ipAddress": "192.0.2.0",
"events": [
{
"type": "USER_SETTINGS",
"name": "CREATE_USER",
"parameters": [
{
"name": "USER_EMAIL",
"value": "liz@example.com"
}
]
}
]
}Bildirimleri yanıtlama
Başarıyı belirtmek için aşağıdaki durum kodlarından birini döndürebilirsiniz:
200, 201, 202, 204 veya
102.
Hizmetiniz Google'ın API istemci kitaplığını kullanıyorsa
ve Admin SDK API'si olan 500,502, 503 veya 504 değerini döndürür
eksponansiyel geri yükleme ile yeniden deneme yapar.
Diğer tüm iade durum kodları, mesaj hatası olarak değerlendirilir.
Admin SDK API bildirim etkinliklerini anlama
Bu bölümde, hangi bildirimler için gönderebileceğiniz .
Reports API push bildirimleri iki tür mesaj içerir: senkronizasyon mesajları ve etkinlik bildirimleri. Mesaj türü, X-Goog-Resource-State HTTP üst bilgisinde belirtilir. Etkinlik bildirimleri için olası değerler, activities.list yöntemiyle aynıdır. Her uygulamanın benzersiz etkinlikleri vardır:
Bildirimleri durdur
expiration mülkü, bildirimlerin ne zaman otomatik olarak duracağını kontrol eder. Şunları yapabilirsiniz:
o kanaldan önce bildirim almayı durdurmayı seçebilirsiniz.
şu adreste stop yöntemini çağırarak süresi dolar:
aşağıdaki URI:
https://www.googleapis.com/admin/reports_v1/channels/stop
Bu yöntem, aşağıdaki örnekte gösterildiği gibi en azından kanalın id ve resourceId özelliklerini sağlamanız gerekir. Admin SDK API'de watch yöntemlerine sahip birkaç tür kaynak varsa yalnızca bir stop yöntemi olduğunu unutmayın.
Yalnızca doğru izne sahip kullanıcılar bir kanalı durdurabilir. Özellikle:
- Kanal normal bir kullanıcı hesabı tarafından oluşturulmuşsa, aynı istemciden gelen OAuth 2.0 istemci kimliklerine göre kimlik doğrulama jetonları) kanalı durdurabilir.
- Kanal bir hizmet hesabı tarafından oluşturulduysa aynı müşterideki tüm kullanıcılar kanalı durdurabilir.
Aşağıdaki kod örneğinde, bildirimlerin nasıl durdurulacağı gösterilmektedir:
POST https://www.googleapis.com/admin/reports_v1/channels/stop
Authorization: Bearer CURRENT_USER_AUTH_TOKEN
Content-Type: application/json
{
"id": "4ba78bf0-6a47-11e2-bcfd-0800200c9a66",
"resourceId": "ret08u3rv24htgh289g"
}