یک برنامه خط فرمان جاوا ایجاد کنید که درخواستهایی را به API گوگل کیپ ارسال کند.
آموزشهای سریع، نحوه راهاندازی و اجرای برنامهای که API گوگل ورکاسپیس را فراخوانی میکند، توضیح میدهند. این آموزش سریع از یک رویکرد احراز هویت سادهشده استفاده میکند که برای محیط آزمایشی مناسب است. برای محیط عملیاتی، توصیه میکنیم قبل از انتخاب اعتبارنامههای دسترسی مناسب برای برنامه خود، در مورد احراز هویت و مجوزدهی اطلاعات کسب کنید.
این راهنمای سریع از کتابخانههای کلاینت API پیشنهادی Google Workspace برای مدیریت برخی از جزئیات جریان احراز هویت و مجوز استفاده میکند.
اهداف
- محیط خود را تنظیم کنید.
- نمونه را تنظیم کنید.
- نمونه را اجرا کنید.
پیشنیازها
- جاوا ۱۱ یا بالاتر.
- گریدل ۷.۰ یا بالاتر .
- یک پروژه ابری گوگل .
- یک حساب گوگل که گوگل کیپ در آن فعال باشد.
محیط خود را تنظیم کنید
برای تکمیل این شروع سریع، محیط خود را راهاندازی کنید.
فعال کردن API
قبل از استفاده از APIهای گوگل، باید آنها را در یک پروژه گوگل کلود فعال کنید. میتوانید یک یا چند API را در یک پروژه گوگل کلود فعال کنید.در کنسول گوگل کلود، رابط برنامهنویسی کاربردی گوگل کیپ (Google Keep API) را فعال کنید.
ایجاد حساب کاربری سرویس
حساب کاربری سرویس، نوع خاصی از حساب کاربری است که توسط یک برنامه کاربردی استفاده میشود، نه یک شخص. میتوانید از یک حساب کاربری سرویس برای دسترسی به دادهها یا انجام اقدامات توسط حساب کاربری ربات، یا برای دسترسی به دادهها از طرف کاربران Google Workspace یا Cloud Identity استفاده کنید. برای اطلاعات بیشتر، به بخش «درک حسابهای کاربری سرویس» مراجعه کنید.کنسول گوگل کلود
- در کنسول گوگل کلود، به Menu > IAM & Admin > Service Accounts بروید.
- روی ایجاد حساب سرویس کلیک کنید.
- جزئیات حساب سرویس را پر کنید، سپس روی ایجاد و ادامه کلیک کنید.
- اختیاری: برای اعطای دسترسی به منابع پروژه Google Cloud خود، نقشهایی را به حساب سرویس خود اختصاص دهید. برای جزئیات بیشتر، به بخش اعطای، تغییر و لغو دسترسی به منابع مراجعه کنید.
- روی ادامه کلیک کنید.
- اختیاری: کاربران یا گروههایی را که میتوانند با این حساب سرویس، اقدامات را مدیریت و انجام دهند، وارد کنید. برای جزئیات بیشتر، به مدیریت جعل هویت حساب سرویس مراجعه کنید.
- روی «انجام شد» کلیک کنید. آدرس ایمیل حساب سرویس را یادداشت کنید.
رابط خط فرمان جیکلاود
- ایجاد حساب کاربری سرویس:
gcloud iam service-accounts createSERVICE_ACCOUNT_NAME\ --display-name="SERVICE_ACCOUNT_NAME" - اختیاری: برای اعطای دسترسی به منابع پروژه Google Cloud خود، نقشهایی را به حساب سرویس خود اختصاص دهید. برای جزئیات بیشتر، به بخش اعطای، تغییر و لغو دسترسی به منابع مراجعه کنید.
ایجاد اعتبارنامه برای یک حساب کاربری سرویس
شما باید اعتبارنامههایی را به شکل یک جفت کلید عمومی/خصوصی دریافت کنید. این اعتبارنامهها توسط کد شما برای تأیید اقدامات حساب سرویس در برنامهتان استفاده میشوند.- در کنسول گوگل کلود، به Menu > IAM & Admin > Service Accounts بروید.
- حساب کاربری سرویس خود را انتخاب کنید.
- روی کلیدها > افزودن کلید > ایجاد کلید جدید کلیک کنید.
- JSON را انتخاب کنید، سپس روی ایجاد کلیک کنید.
جفت کلید عمومی/خصوصی جدید شما ایجاد و به عنوان یک فایل جدید در دستگاه شما دانلود میشود. فایل JSON دانلود شده را با نام
credentials.jsonدر دایرکتوری کاری خود ذخیره کنید. این فایل تنها کپی از این کلید است. برای اطلاعات بیشتر در مورد نحوه ذخیره ایمن کلید خود، به مدیریت کلیدهای حساب سرویس مراجعه کنید. - روی بستن کلیک کنید.
تنظیم نمایندگی در سطح دامنه برای یک حساب کاربری سرویس
برای فراخوانی APIها از طرف کاربران در یک سازمان Google Workspace، حساب سرویس شما باید در کنسول مدیریت Google Workspace توسط یک حساب کاربری مدیر ارشد، تفویض اختیار در سطح دامنه را دریافت کند. برای اطلاعات بیشتر، به بخش تفویض اختیار در سطح دامنه به یک حساب کاربری سرویس مراجعه کنید.- در کنسول گوگل کلود، به Menu > IAM & Admin > Service Accounts بروید.
- حساب کاربری سرویس خود را انتخاب کنید.
- روی نمایش تنظیمات پیشرفته کلیک کنید.
- در قسمت «واگذاری در سطح دامنه»، «شناسه کلاینت» حساب سرویس خود را پیدا کنید. برای کپی کردن مقدار شناسه کلاینت در کلیپبورد، روی «کپی کردن » کلیک کنید.
اگر به حساب کاربری گوگل ورکاسپیس مربوطه دسترسی مدیر ارشد (super administrator) دارید، روی «مشاهده کنسول مدیریت گوگل ورکاسپیس» (View Google Workspace Admin Console) کلیک کنید، سپس با استفاده از یک حساب کاربری مدیر ارشد (super administrator) وارد سیستم شوید و مراحل زیر را ادامه دهید.
اگر به حساب کاربری مربوطه در گوگل ورکاسپیس دسترسی مدیر ارشد ندارید، با یکی از مدیران ارشد آن حساب تماس بگیرید و شناسه کلاینت حساب کاربری سرویس خود و لیست محدودههای OAuth را برای آنها ارسال کنید تا بتوانند مراحل زیر را در کنسول مدیریت انجام دهند.
- در کنسول مدیریت گوگل، به Menu > Security > Access and data control > API controls بروید.
- روی مدیریت نمایندگی در سطح دامنه کلیک کنید.
- روی افزودن جدید کلیک کنید.
- در فیلد «شناسه کلاینت»، شناسه کلاینتی که قبلاً کپی کردهاید را جایگذاری کنید.
- در فیلد "محدودههای OAuth"، فهرستی از محدودههای مورد نیاز برنامه خود را که با کاما از هم جدا شدهاند، وارد کنید. این همان مجموعهای از محدودههایی است که هنگام پیکربندی صفحه رضایت OAuth تعریف کردهاید.
- روی تأیید کلیک کنید.
آماده کردن فضای کاری
در دایرکتوری کاری خود، یک ساختار پروژه جدید ایجاد کنید:
gradle init --type basic mkdir -p src/main/java src/main/resourcesدر دایرکتوری
src/main/resources/، فایلcredentials.jsonرا که قبلاً دانلود کردهاید، کپی کنید.فایل پیشفرض
build.gradleرا باز کنید و محتویات آن را با کد زیر جایگزین کنید:apply plugin: 'java' apply plugin: 'application' mainClassName = 'KeepQuickstart' sourceCompatibility = 1.8 targetCompatibility = 1.8 version = '1.0' sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { implementation 'com.google.api-client:google-api-client:1.23.0' implementation 'com.google.oauth-client:google-oauth-client-jetty:1.23.0' implementation 'com.google.apis:google-api-services-keep:v1-rev20210528-1.31.0' }
نمونه را تنظیم کنید
در پوشه
src/main/java/، یک فایل جاوا جدید با نامی مطابق با مقدارmainClassNameدر فایلbuild.gradleخود ایجاد کنید.کد زیر را در فایل جاوای جدید خود قرار دهید:
import com.google.api.client.auth.oauth2.Credential; import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp; import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver; import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow; import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.client.json.JsonFactory; import com.google.api.client.json.gson.GsonFactory; import com.google.api.client.util.store.FileDataStoreFactory; import com.google.api.services.keep.v1.Keep; import com.google.api.services.keep.v1.model.Note; import com.google.api.services.keep.v1.model.Section; import com.google.api.services.keep.v1.model.TextContent; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.security.GeneralSecurityException; import java.util.Collections; import java.util.List; public class KeepQuickstart { private static final String APPLICATION_NAME = "Google Keep API Java Quickstart"; private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance(); /** * Global instance of the scopes required by this quickstart. If modifying these scopes, delete * your previously saved tokens/ folder. */ private static final List<String> KEEP_SCOPES = Collections.singletonList("https://www.googleapis.com/auth/keep"); private static final String CREDENTIALS_FILE_PATH = "/credentials.json"; /** * Creates an authorized Credential object. * * @param HTTP_TRANSPORT The network HTTP Transport. * @return An authorized Credential object. * @throws IOException */ private static Credential getOAuthCredentials(final NetHttpTransport HTTP_TRANSPORT) throws IOException { // Load client secrets. InputStream in = KeepQuickstart.class.getResourceAsStream(CREDENTIALS_FILE_PATH); if (in == null) { throw new FileNotFoundException("Resource not found: " + CREDENTIALS_FILE_PATH); } GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in)); // Build flow and trigger user authorization request. GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder( HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, KEEP_SCOPES) .setDataStoreFactory(new FileDataStoreFactory(new java.io.File("tokens"))) .setAccessType("offline") .build(); LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort(8888).build(); return new AuthorizationCodeInstalledApp(flow, receiver).authorize("user"); } public static void main(String... args) throws IOException, GeneralSecurityException { // Build a new authorized API client service. final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport(); Keep service = new Keep.Builder(HTTP_TRANSPORT, JSON_FACTORY, getOAuthCredentials(HTTP_TRANSPORT)) .setApplicationName(APPLICATION_NAME) .build(); Section noteBody = new Section().setText(new TextContent().setText("Finish preparations by tomorrow!")); Note newNote = new Note().setTitle("Customer call next week").setBody(noteBody); // Creates a new text note. service.notes().create(newNote).execute(); } }
نمونه را اجرا کنید
نمونه را اجرا کنید:
gradle run
- اولین باری که نمونه را اجرا میکنید، از شما اجازه دسترسی میخواهد:
- اگر قبلاً وارد حساب گوگل خود نشدهاید، در صورت درخواست وارد شوید. اگر با چندین حساب وارد شدهاید، یک حساب را برای استفاده جهت مجوز انتخاب کنید.
- روی پذیرش کلیک کنید.
برنامه جاوای شما اجرا میشود و رابط برنامهنویسی کاربردی Google Keep را فراخوانی میکند.
اطلاعات مجوز در سیستم فایل ذخیره میشود، بنابراین دفعه بعد که کد نمونه را اجرا میکنید، از شما درخواست مجوز نمیشود.