গুগল ক্লাউড সার্চ কোয়েরি এপিআই-এর কলগুলো একজন লাইসেন্সপ্রাপ্ত ডোমেইন ব্যবহারকারীর দ্বারা অনুমোদিত হতে হয়। যেহেতু সার্ভিস অ্যাকাউন্টগুলো লাইসেন্সপ্রাপ্ত ডোমেইন ব্যবহারকারী নয়, তাই তারা ডিফল্টভাবে কোয়েরি এপিআই কল করতে পারে না। কোনো সার্ভিস অ্যাকাউন্টকে কোয়েরি এপিআই কল করার ক্ষমতা দিতে, একজন ডোমেইন অ্যাডমিনিস্ট্রেটর ডোমেইন-ব্যাপী কর্তৃত্ব অর্পণের মাধ্যমে সার্ভিস অ্যাকাউন্টটিকে আপনার ডোমেইনের ব্যবহারকারীর ডেটাতে অ্যাক্সেস প্রদান করতে পারেন। কর্তৃত্ব অর্পণ করা একটি সার্ভিস অ্যাকাউন্ট ক্লাউড সার্চে অ্যাক্সেস আছে এমন যেকোনো ব্যবহারকারীর ছদ্মবেশ ধারণ করতে পারে।
পরিষেবা অ্যাকাউন্ট এবং পরিচয়পত্র তৈরি করুন
আপনার কাছে সার্ভিস অ্যাকাউন্টের ক্রেডেনশিয়াল না থাকলে, সার্ভিস অ্যাকাউন্টের ক্রেডেনশিয়াল তৈরি করুন দেখুন।
আপনার পরিষেবা অ্যাকাউন্টে ডোমেন-ব্যাপী কর্তৃত্ব অর্পণ করুন
একটি Google Workspace ডোমেনে ব্যবহারকারীর ডেটা অ্যাক্সেস করতে হলে, ডোমেনটির একজন সুপার অ্যাডমিনিস্ট্রেটরকে আপনার সার্ভিস অ্যাকাউন্টে অ্যাক্সেসের অনুমতি দিতে হবে। আরও তথ্যের জন্য, ডোমেন-ব্যাপী ডেলিগেশনের মাধ্যমে Google Workspace API অ্যাক্সেস নিয়ন্ত্রণ দেখুন।
একটি পরিষেবা অ্যাকাউন্টে ডোমেন-ব্যাপী কর্তৃত্ব অর্পণ করতে:
- আপনার ডোমেইনের অ্যাডমিন কনসোলে , প্রধান > নিরাপত্তা > অ্যাক্সেস এবং ডেটা নিয়ন্ত্রণ > এপিআই নিয়ন্ত্রণ- এ যান।
- ডোমেনব্যাপী ডেলিগেশন প্যানে, ‘ম্যানেজ ডোমেন ওয়াইড ডেলিগেশন’ নির্বাচন করুন।
- নতুন যোগ করুন- এ ক্লিক করুন।
- ক্লায়েন্ট আইডি ফিল্ডে আপনার সার্ভিস অ্যাকাউন্টের ক্লায়েন্ট আইডিটি প্রবেশ করান।
- OAuth Scopes ফিল্ডে, প্রয়োজনীয় স্কোপগুলোর একটি কমা-দ্বারা-বিভক্ত তালিকা লিখুন। সার্চ অ্যাপ্লিকেশনগুলোর জন্য
https://www.googleapis.com/auth/cloud_search.queryব্যবহার করুন। - অনুমোদন করুন- এ ক্লিক করুন।
আপনার পরিষেবা অ্যাকাউন্ট এখন ক্লাউড সার্চ কোয়েরি এপিআই-তে ডোমেন-ব্যাপী অ্যাক্সেস পেয়েছে এবং এই পরিধির মধ্যে আপনার ডোমেনের যেকোনো ব্যবহারকারীর ছদ্মবেশ ধারণ করতে পারে। আপনি এখন আপনার ডোমেনের ব্যবহারকারীদের পক্ষ থেকে একটি অনুমোদিত ক্লাউড সার্চ এপিআই পরিষেবা অবজেক্ট ইনস্ট্যানশিয়েট করতে পারবেন।
একটি ক্লাউড সার্চ এপিআই পরিষেবা অবজেক্ট ইনস্ট্যানশিয়েট করুন
এই বিভাগে দেখানো হয়েছে কিভাবে OAuth 2.0 এবং আপনার সার্ভিস অ্যাকাউন্টের ক্রেডেনশিয়াল ব্যবহার করে একটি ক্লাউড সার্চ এপিআই সার্ভিস অবজেক্ট ইনস্ট্যানশিয়েট ও অথরাইজ করতে হয়। এই উদাহরণগুলো সার্ভিস অ্যাকাউন্টের JSON প্রাইভেট কী ফাইল থেকে তথ্য পড়ে।
জাভা
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.
*
* @param userEmail The email of the user to impersonate.
* @return CloudSearch service object.
*/
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();
return new CloudSearch.Builder(httpTransport, jsonFactory, creds).build();
}
পাইথন
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 Cloud Search service object.
Args:
user_email: The email of the user to impersonate.
Returns:
Cloud Search Query API service object.
"""
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)