คู่มือเริ่มต้นฉบับย่อจะอธิบายวิธีตั้งค่าและเรียกใช้แอปที่เรียกใช้ Google Workspace API
การเริ่มต้นใช้งาน Google Workspace อย่างรวดเร็วจะใช้ไลบรารีของไคลเอ็นต์ API เพื่อจัดการรายละเอียดบางอย่างเกี่ยวกับขั้นตอนการตรวจสอบสิทธิ์และการให้สิทธิ์ เราขอแนะนำให้คุณใช้ไลบรารีของไคลเอ็นต์สำหรับแอปของคุณเอง การเริ่มต้นอย่างรวดเร็วนี้ใช้วิธีการตรวจสอบสิทธิ์แบบง่ายซึ่งเหมาะสมกับสภาพแวดล้อมการทดสอบ สำหรับสภาพแวดล้อมการใช้งานจริง เราขอแนะนำให้เรียนรู้เกี่ยวกับการตรวจสอบสิทธิ์และการให้สิทธิ์ก่อนเลือกข้อมูลเข้าสู่ระบบที่เหมาะสำหรับแอปของคุณ
สร้างแอปพลิเคชันบรรทัดคำสั่ง Java ที่ส่งคำขอไปยัง Google Keep API
วัตถุประสงค์
- ตั้งค่าสภาพแวดล้อมของคุณ
- ตั้งค่าตัวอย่าง
- เรียกใช้ตัวอย่าง
สิ่งที่ต้องดำเนินการก่อน
- Java 1.8 หรือสูงกว่า
- Gradle 7.0 ขึ้นไป
- โปรเจ็กต์ Google Cloud
- บัญชี Google ที่เปิดใช้ Google Keep
ตั้งค่าสภาพแวดล้อมของคุณ
ตั้งค่าสภาพแวดล้อมเพื่อให้การเริ่มต้นอย่างรวดเร็วนี้เสร็จสมบูรณ์
เปิดใช้ API
ก่อนใช้ Google APIs คุณต้องเปิดใช้ API เหล่านี้ในโปรเจ็กต์ Google Cloud คุณสามารถเปิด API ได้ตั้งแต่ 1 รายการขึ้นไปในโปรเจ็กต์ Google Cloud เดียวเปิดใช้ Google Keep API ในคอนโซล Google Cloud
สร้างบัญชีบริการ
บัญชีบริการเป็นบัญชีชนิดพิเศษที่แอปพลิเคชันใช้ ไม่ใช่บัญชีบุคคล คุณสามารถใช้บัญชีบริการเพื่อเข้าถึงข้อมูลหรือดำเนินการโดยบัญชีโรบ็อต หรือเพื่อเข้าถึงข้อมูลในนามของผู้ใช้ Google Workspace หรือ Cloud Identity ได้ โปรดดูข้อมูลเพิ่มเติมที่หัวข้อการทำความเข้าใจบัญชีบริการคอนโซล Google Cloud
- ในคอนโซล Google Cloud ให้ไปที่เมนู > IAM และผู้ดูแลระบบ > บัญชีบริการ
- คลิกสร้างบัญชีบริการ
- กรอกรายละเอียดบัญชีบริการ แล้วคลิกสร้างและต่อไป
- ไม่บังคับ: มอบหมายบทบาทให้กับบัญชีบริการเพื่อให้สิทธิ์เข้าถึงทรัพยากรของโปรเจ็กต์ Google Cloud โปรดดูรายละเอียดเพิ่มเติมที่หัวข้อการให้ การเปลี่ยนแปลง และการเพิกถอนสิทธิ์เข้าถึงทรัพยากร
- คลิกต่อไป
- ไม่บังคับ: ป้อนผู้ใช้หรือกลุ่มที่จัดการและดำเนินการด้วยบัญชีบริการนี้ได้ โปรดดูรายละเอียดเพิ่มเติมที่หัวข้อการจัดการการแอบอ้างเป็นบัญชีบริการ
- คลิกเสร็จ จดอีเมลสำหรับบัญชีบริการ
gcloud CLI
- สร้างบัญชีบริการโดยทำดังนี้
gcloud iam service-accounts create
SERVICE_ACCOUNT_NAME
\ --display-name="SERVICE_ACCOUNT_NAME
" - ไม่บังคับ: มอบหมายบทบาทให้กับบัญชีบริการเพื่อให้สิทธิ์เข้าถึงทรัพยากรของโปรเจ็กต์ Google Cloud โปรดดูรายละเอียดเพิ่มเติมที่หัวข้อการให้ การเปลี่ยนแปลง และการเพิกถอนสิทธิ์เข้าถึงทรัพยากร
สร้างข้อมูลเข้าสู่ระบบสำหรับบัญชีบริการ
คุณจะต้องขอรับข้อมูลเข้าสู่ระบบในรูปแบบคู่คีย์สาธารณะ/ส่วนตัว โค้ดจะใช้ข้อมูลเข้าสู่ระบบเหล่านี้เพื่อให้สิทธิ์การดำเนินการของบัญชีบริการภายในแอป- ในคอนโซล Google Cloud ให้ไปที่เมนู > IAM และผู้ดูแลระบบ > บัญชีบริการ
- เลือกบัญชีบริการ
- คลิกคีย์ > เพิ่มคีย์ > สร้างคีย์ใหม่
- เลือก JSON แล้วคลิกสร้าง
ระบบจะสร้างคู่คีย์สาธารณะ/ส่วนตัวใหม่และดาวน์โหลดลงในเครื่องเป็นไฟล์ใหม่ บันทึกไฟล์ JSON ที่ดาวน์โหลดเป็น
credentials.json
ในไดเรกทอรีที่ใช้งานได้ ไฟล์นี้เป็นสำเนาเดียวของคีย์นี้ ดูข้อมูลเกี่ยวกับวิธีจัดเก็บคีย์ให้ปลอดภัยที่หัวข้อการจัดการคีย์ของบัญชีบริการ - คลิกปิด
ตั้งค่าการมอบสิทธิ์ทั่วทั้งโดเมนสำหรับบัญชีบริการ
หากต้องการเรียกใช้ API ในนามของผู้ใช้ในองค์กร Google Workspace บัญชีบริการของคุณต้องได้รับการมอบสิทธิ์ทั่วทั้งโดเมนในคอนโซลผู้ดูแลระบบ Google Workspace จากบัญชีผู้ดูแลระบบขั้นสูง ดูข้อมูลเพิ่มเติมได้ที่การมอบอำนาจทั่วโดเมนให้กับบัญชีบริการ- ในคอนโซล Google Cloud ให้ไปที่เมนู > IAM และผู้ดูแลระบบ > บัญชีบริการ
- เลือกบัญชีบริการ
- คลิกแสดงการตั้งค่าขั้นสูง
- ค้นหา "รหัสไคลเอ็นต์" ของบัญชีบริการในส่วน "การมอบสิทธิ์ทั่วทั้งโดเมน" คลิกคัดลอก เพื่อคัดลอกค่ารหัสไคลเอ็นต์ไปยังคลิปบอร์ด
หากคุณมีสิทธิ์เข้าถึงระดับผู้ดูแลระบบขั้นสูงในบัญชี Google Workspace ที่เกี่ยวข้อง ให้คลิกดูคอนโซลผู้ดูแลระบบ Google Workspace จากนั้นลงชื่อเข้าใช้ด้วยบัญชีผู้ใช้ของผู้ดูแลระบบขั้นสูงและทำตามขั้นตอนต่อไปนี้
หากคุณไม่มีสิทธิ์เข้าถึงระดับผู้ดูแลระบบขั้นสูงในบัญชี Google Workspace ที่เกี่ยวข้อง โปรดติดต่อผู้ดูแลระบบขั้นสูงของบัญชีนั้นและส่งรหัสไคลเอ็นต์และรายการขอบเขต OAuth ของบัญชีบริการไปให้ผู้ดูแลระบบทำตามขั้นตอนต่อไปนี้ในคอนโซลผู้ดูแลระบบ
- ในคอนโซลผู้ดูแลระบบของ Google ให้ไปที่เมนู > ความปลอดภัย > การเข้าถึงและการควบคุมข้อมูล > การควบคุม API
- คลิกจัดการการมอบสิทธิ์ทั่วทั้งโดเมน
- คลิกเพิ่มใหม่
- วางรหัสไคลเอ็นต์ที่คัดลอกไว้ก่อนหน้านี้ในช่อง "รหัสไคลเอ็นต์"
- ในช่อง "ขอบเขต 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/
ให้สร้างไฟล์ Java ใหม่ที่มีชื่อที่ตรงกับค่าmainClassName
ในไฟล์build.gradle
ใส่โค้ดต่อไปนี้ในไฟล์ Java ใหม่
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 ให้ลงชื่อเข้าใช้เมื่อได้รับข้อความแจ้ง หากคุณลงชื่อเข้าใช้หลายบัญชี ให้เลือกบัญชีเดียวที่จะใช้สำหรับการให้สิทธิ์
- คลิกยอมรับ
แอปพลิเคชัน Java ของคุณจะเรียกใช้และเรียก API ของ Google Keep
ข้อมูลการให้สิทธิ์จะเก็บอยู่ในระบบไฟล์ ดังนั้นเมื่อคุณเรียกใช้โค้ดตัวอย่างในครั้งถัดไป คุณจะไม่ได้รับข้อความแจ้งให้ให้สิทธิ์
ขั้นตอนถัดไป
- แก้ปัญหาการตรวจสอบสิทธิ์และการให้สิทธิ์
- เอกสารประกอบอ้างอิงสำหรับ Google Keep API
- เอกสารประกอบเกี่ยวกับไคลเอ็นต์ Google APIs สำหรับ Java
- เอกสารประกอบเกี่ยวกับ Javadoc สำหรับ Google Keep API