Cloud Search Query API, API çağrılarının OAuth kullanılarak yetkilendirilmesini gerektirir. alanınızdaki lisanslı bir kullanıcıya ait kimlik bilgileridir. Varsayılan olarak, hizmet ve yapılandırma API'lerine erişmek için kullanılan hesapları, Cloud Search'e sahip alan kullanıcısı olmadıklarından sorgu API'si çağrıları için kullanılır veya Google Workspace lisansları. Aşağıdaki durumlarda bir hizmet hesabı kullanmak sorgu API çağrılarını doğrularsa bir alan yöneticisi hesaba kullanıcı verilerine alan adı genelinde erişebilir. Buna erişim alan genelinde yetki verme hakkında daha fazla bilgi edinin. Yetki verilmiş bir hizmet hesabı Cloud Search'e erişimi olan kullanıcılar da dahil olmak üzere herhangi bir kullanıcının kimliğine bürünebilir.
Hizmet hesabını ve kimlik bilgilerini oluşturma
Henüz hizmet hesabı kimlik bilgileriniz yoksa şuraya bakın: Hizmet hesabı kimlik bilgileri oluşturun.
Hizmet hesabınıza alan genelinde yetki verin
Bir Google Workspace alanındaki kullanıcı verilerine erişmek için alan süper yöneticilerinden biri tarafından erişim izni verilmesi gerekir. Alan genelinde yetki hakkında daha fazla bilgi için Alan genelinde yetkiyle Google Workspace API erişimini kontrol edin.
Bir hizmet hesabına alan genelinde yetki vermek için:
- Alanınızın Yönetici konsolunda şu sayfaya gidin: Ana menü > Güvenlik > Erişim ve veri denetimi > API denetimleri.
Alan adı genelinde yetki bölmesinde Alan Genelinde Yönet'i seçin Yetki.
Yeni ekle'yi tıklayın.
Client ID (İstemci Kimliği) alanına, hizmet hesabı oluşturma adımlarına göz atın.
OAuth Kapsamları alanına kapsamların virgülle ayrılmış listesini girin. gerekli değildir. Kapsamı kullanma Arama uygulamaları için
https://www.googleapis.com/auth/cloud_search.query
daha fazla bilgi edindiniz.Yetkilendir'i tıklayın.
Hizmet hesabınız artık Cloud Search Query API'ye alan genelinde erişebilir. ve alan adınızdaki herhangi bir kullanıcının kimliğine bürünebilir. Artık hazırsınız: sizin adınıza yetkili bir Cloud Search API hizmet nesnesini örneklendirmek alan adı kullanıcıları için geçerlidir.
Cloud Search API hizmet nesnesini örneklendirme
Bu bölümde, bir Cloud Search API hizmet nesnesinin nasıl örnekleneceği ve daha sonra OAuth 2.0 ve hizmet hesabınızın kimlik bilgilerinden yararlanırsınız. Örnekler JSON biçimli özel anahtar dosyasından hizmet hesabının bilgilerini okuma.
Java
import java.util.Collections;
import java.io.FileInputStream;
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.services.cloudsearch.v1.CloudSearch;
import com.google.api.services.cloudsearch.v1.CloudSearchScopes;
...
/** Path to the Service Account's Private Key file */
private static final String SERVICE_ACCOUNT_FILE_PATH = "/path/to/key.json";
/**
* Build and return a Cloud Search service object authorized with the service
* account that acts on behalf of the given user.
*
* @param userEmail The email of the user to impersonate. Needs permissions to access Cloud Search.
* @return CloudSearch service object that is ready to make requests.
*/
public static CloudSearch getCloudSearchAPIService(String userEmail)
throws FileNotFoundException, IOException {
FileInputStream credsFile = new FileInputStream(SERVICE_ACCOUNT_FILE_PATH);
GoogleCredential init = GoogleCredential.fromStream(credsFile);
HttpTransport httpTransport = init.getTransport();
JsonFactory jsonFactory = init.getJsonFactory();
GoogleCredential creds = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId(init.getServiceAccountId())
.setServiceAccountPrivateKey(init.getServiceAccountPrivateKey())
.setServiceAccountScopes(Collections.singleton(CloudSearchScopes.CLOUD_SEARCH_QUERY))
.setServiceAccountUser(userEmail)
.build();
CloudSearch service = new CloudSearch.Builder(httpTransport, jsonFactory, creds).build();
return service;
}
Python
from google.oauth2 import service_account
from googleapiclient.discovery import build
# Path to the Service Account's Private Key file
SERVICE_ACCOUNT_FILE_PATH = "/path/to/key.json"
def create_query_api_service(user_email):
"""Build and return a CloudSearch service object authorized with the service
account that acts on behalf of the given user.
Args:
user_email: The email of the user to impersonate. Needs permissions to access Cloud Search.
Returns:
Cloud Search Query API service object that is ready to make requests.
"""
credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE_PATH,
scopes=['https://www.googleapis.com/auth/cloud_search.query'])
delegated_credentials = credentials.with_subject(user_email)
return build("cloudsearch", "v1", credentials=delegated_credentials)