เอกสารนี้อธิบายขั้นตอนที่จำเป็นในการเริ่มใช้ Geocoding API
ข้อกำหนดเบื้องต้น
ขั้นตอนนี้จะแนะนำวิธีตั้งค่าบัญชี Google Cloud และโปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงิน นอกจากนี้ คุณควรทำความคุ้นเคยกับวิธีเรียกเก็บเงินสำหรับการใช้ Geocoding API ด้วย
- ตรวจสอบการเรียกเก็บเงินและค่าใช้จ่ายสำหรับการใช้งานที่การใช้งานและการเรียกเก็บเงินของ Geocoding API
ตรวจสอบว่าคุณมีบัญชี Google Cloud
ลงชื่อเข้าใช้คอนโซล Google Cloudยืนยันว่าคุณมีโปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงิน
ไปที่หน้าการเรียกเก็บเงิน- เลือกโปรเจ็กต์เพื่อเปิดหน้าการเรียกเก็บเงิน
ในหน้าการเรียกเก็บเงิน ให้ทำดังนี้
- หากเปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ที่เลือกไว้แล้ว และคุณมีบัญชีสำหรับการเรียกเก็บเงินเพียงบัญชีเดียว หน้าการเรียกเก็บเงินจะเปิดขึ้น
- หากมีบัญชีสำหรับการเรียกเก็บเงินหลายบัญชี ให้เลือกไปที่บัญชีสำหรับการเรียกเก็บเงินที่ลิงก์ไว้เพื่อดูรายละเอียดเกี่ยวกับบัญชีสำหรับการเรียกเก็บเงินที่เชื่อมโยงกับโปรเจ็กต์
- หากมีบัญชีสำหรับการเรียกเก็บเงินอยู่แล้วแต่ไม่ได้เชื่อมโยงกับโปรเจ็กต์ ระบบจะแจ้งให้คุณลิงก์บัญชีสำหรับการเรียกเก็บเงินกับโปรเจ็กต์
- หากไม่มีบัญชีสำหรับการเรียกเก็บเงินหรือต้องการสร้างบัญชีสำหรับการเรียกเก็บเงินใหม่ ให้เลือกจัดการบัญชีสำหรับการเรียกเก็บเงินเพื่อสร้างบัญชีสำหรับการเรียกเก็บเงินใหม่ ดูข้อมูลเพิ่มเติมได้ที่หัวข้อสร้างบัญชีสำหรับการเรียกเก็บเงินใน Cloud แบบให้บริการเองใหม่
เปิดใช้ API
ก่อนที่จะใช้ Geocoding API ได้ คุณต้องใช้คอนโซล Google Cloud หรือคำสั่ง gcloud เพื่อเปิดใช้ในโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google
วิธีเปิดใช้ API
คอนโซล
เปิดหน้าผลิตภัณฑ์ในคอนโซล Google Cloud โดยทำดังนี้
เปิดใช้ Geocoding APIคลิกปุ่มเปิดใช้
gcloud
gcloud services enable \ --project "PROJECT" \ "geocoding-backend.googleapis.com"
อ่านข้อมูลเพิ่มเติมเกี่ยวกับ Google Cloud SDK, การติดตั้ง Cloud SDK และคำสั่งต่อไปนี้
รับคีย์ API เพื่อใช้กับ Geocoding API
ผลิตภัณฑ์ Google Maps Platform ได้รับการปกป้องจากการใช้งานที่ไม่ได้รับอนุญาตโดยกำหนดให้การเรียก API ต้องมีคีย์ API หรือโทเค็น OAuth อย่างใดอย่างหนึ่ง ขั้นตอนการใช้คีย์ API จะดำเนินการก่อน หากต้องการใช้โทเค็น OAuth แทน โปรดดูหัวข้อสร้างโทเค็น OAuth
คีย์ API คือสตริงตัวอักษรและตัวเลขที่ไม่ซ้ำกันซึ่งเชื่อมโยงบัญชีสำหรับการเรียกเก็บเงินใน Cloud และโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google Cloud กับคำขอที่แอปพลิเคชันส่งไปยัง Google Maps Platform API หรือ SDK หากต้องการสร้างคีย์ใหม่หรือเพิ่ม API หรือ SDK ลงในคีย์ที่มีอยู่ ให้ทำตามวิธีการต่อไปนี้
คอนโซล
-
ไปที่หน้า Google Maps Platform > คีย์และข้อมูลเข้าสู่ระบบ
- หากได้รับข้อความแจ้ง ให้เลือกโปรเจ็กต์
-
ทำสิ่งใดสิ่งหนึ่งต่อไปนี้
-
สร้างคีย์ใหม่:
- คลิกสร้างข้อมูลเข้าสู่ระบบ > คีย์ API
- ในแผงสร้างคีย์ API ให้เปิดรายการเลือกข้อจำกัดของ API
- ล้าง API ที่คีย์นี้ไม่จำเป็นต้องใช้ และตรวจสอบว่าได้เลือก Geocoding API ไว้
- คลิกสร้าง แผงจะแสดงคีย์ API ใหม่
-
ใช้คีย์ที่มีอยู่
- คลิกชื่อคีย์
- ในรายการเลือกข้อจำกัดของ API ให้เลือก Geocoding API
- คลิกบันทึก
การเลือก API ที่นี่ไม่ได้เป็นการเปิดใช้ API ตรวจสอบว่าได้เปิดใช้ Geocoding API ในหน้าคลัง API แล้ว
-
- หากต้องการดูสตริงคีย์ในภายหลัง ให้ไปที่หน้าคีย์และข้อมูลเข้าสู่ระบบ แล้วคลิกแสดงคีย์สำหรับคีย์นั้น
หากคอนโซลดูแตกต่างจากขั้นตอนเหล่านี้ โปรดดูหัวข้อสร้างคีย์ API และเพิ่มข้อจำกัด API ในเอกสารประกอบของ Google Cloud
gcloud
แทนที่ PROJECT_ID ด้วยรหัสโปรเจ็กต์ในคำสั่งต่อไปนี้
-
สร้างคีย์ใหม่: เรียกใช้คำสั่งต่อไปนี้ และแทนที่ DISPLAY_NAME ด้วยชื่อคีย์
gcloud services api-keys create \ --project="PROJECT_ID" \ --display-name="DISPLAY_NAME" \ --api-target=service=geocoding-backend.googleapis.com
อ่านข้อมูลเพิ่มเติมเกี่ยวกับ Google Cloud SDK, การติดตั้ง Cloud SDK และคำสั่งต่อไปนี้
-
ใช้คีย์ที่มีอยู่: เรียกใช้คำสั่งต่อไปนี้ และแทนที่ KEY_ID ด้วยรหัสของคีย์ แฟล็ก
--appendจะเก็บ API ที่คีย์อนุญาตไว้แล้ว หากไม่มีตัวเลือกนี้ คำสั่งจะแทนที่ตัวเลือกเหล่านั้นgcloud services api-keys update KEY_ID \ --project="PROJECT_ID" \ --append \ --api-target=service=geocoding-backend.googleapis.com
อ่านข้อมูลเพิ่มเติมเกี่ยวกับ Google Cloud SDK, การติดตั้ง Cloud SDK และคำสั่งต่อไปนี้
รหัสคีย์ไม่ใช่สตริงคีย์หรือชื่อที่แสดง หากต้องการค้นหา ให้เรียกใช้
gcloud services api-keys list --project="PROJECT_ID"รหัสคือส่วนสุดท้ายของช่องname:projects/PROJECT_NUMBER/locations/global/keys/KEY_ID
หากต้องการดูสตริงคีย์ ให้เรียกใช้ gcloud services api-keys get-key-string KEY_ID
--project="PROJECT_ID"
ส่งคำขอ API
ส่งคำขอ Geocoding API เพื่อแสดงผลการตอบกลับ JSON สำหรับคำค้นหาที่อยู่ "1600 Amphitheatre Parkway, Mountain View, CA" คุณต้องใส่สตริงตัวอักษรและตัวเลขคละกันของคีย์ API ในทุกคำขอ และใช้ HTTPS สำหรับคำขอที่มีคีย์ API
คลิก API_KEY ในโค้ดด้านล่างเพื่อแทรกสตริงตัวอักษรและตัวเลขคละกันของคีย์
curl -H "X-Goog-Api-Key: API_KEY" \ "https://geocode.googleapis.com/v4/geocode/address/1600+Amphitheatre+Parkway,+Mountain+View,+CA">'
- คลิกไอคอนคัดลอกในตัวอย่างโค้ด
เพื่อคัดลอกคำสั่ง curl - วางคำสั่งในหน้าต่างเทอร์มินัลและเรียกใช้คำสั่ง
การตอบกลับเป็นออบเจ็กต์ JSON ในรูปแบบต่อไปนี้
{ "results": [ { "place": "//places.googleapis.com/places/ChIJxQvW8wK6j4AR3ukttGy3w2s", "placeId": "ChIJxQvW8wK6j4AR3ukttGy3w2s", "location": { "latitude": 37.4224119, "longitude": -122.08550779999999 }, "granularity": "ROOFTOP", "viewport": { "low": { "latitude": 37.420886519708496, "longitude": -122.08713963029149 }, "high": { "latitude": 37.423584480291495, "longitude": -122.0844416697085 } }, "formattedAddress": "Google Building 41, 1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA", "postalAddress": { "regionCode": "US", "languageCode": "en", "postalCode": "94043-1351", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1600 Amphitheatre Pkwy" ] }, "addressComponents": [ { "longText": "Google Building 41", "shortText": "Google Building 41", "types": [ "premise" ], "languageCode": "en" }, { "longText": "1600", "shortText": "1600", "types": [ "street_number" ] }, { "longText": "Amphitheatre Parkway", "shortText": "Amphitheatre Pkwy", "types": [ "route" ], "languageCode": "en" }, { "longText": "Mountain View", "shortText": "Mountain View", "types": [ "locality", "political" ], "languageCode": "en" }, { "longText": "Santa Clara County", "shortText": "Santa Clara County", "types": [ "administrative_area_level_2", "political" ], "languageCode": "en" }, { "longText": "California", "shortText": "CA", "types": [ "administrative_area_level_1", "political" ], "languageCode": "en" }, { "longText": "United States", "shortText": "US", "types": [ "country", "political" ], "languageCode": "en" }, { "longText": "94043", "shortText": "94043", "types": [ "postal_code" ] }, { "longText": "1351", "shortText": "1351", "types": [ "postal_code_suffix" ] } ], "types": [ "premise", "street_address" ] } ] }
ใช้ข้อจำกัดของคีย์ API
Google ขอแนะนำอย่างยิ่งให้คุณจำกัดคีย์ API โดยจำกัดการใช้งานเฉพาะกับ API และแอปที่จำเป็นต้องใช้เท่านั้น การจำกัดคีย์ API จะเพิ่มความปลอดภัยให้กับแอปพลิเคชันโดยการปกป้องแอปพลิเคชันจากคำขอที่ไม่ได้รับอนุญาต คีย์ API รองรับข้อจำกัด 2 ประเภท ได้แก่
- ข้อจำกัดของ API ระบุ SDK และ API ที่เรียกใช้ได้โดยใช้คีย์ API คอนโซลและ gcloud CLI ต้องมีข้อจำกัด API อย่างน้อย 1 รายการเมื่อคุณสร้างคีย์
- ข้อจำกัดของแอปพลิเคชันจะระบุเว็บไซต์, ที่อยู่ IP หรือแอปที่ใช้คีย์ API ได้
ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ข้อจำกัดได้ที่จำกัดคีย์ API
สร้างโทเค็น OAuth
Geocoding API รองรับ OAuth 2.0 สำหรับการตรวจสอบสิทธิ์ Google รองรับสถานการณ์ OAuth 2.0 ทั่วไป เช่น สถานการณ์สำหรับเว็บเซิร์ฟเวอร์
เอกสารนี้อธิบายวิธีส่งโทเค็น OAuth ไปยังการเรียก Geocoding API ในสภาพแวดล้อมในการพัฒนาซอฟต์แวร์ ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ OAuth ในสภาพแวดล้อมฮาร์ดแวร์และซอฟต์แวร์ได้ที่หัวข้อวิธีการตรวจสอบสิทธิ์ที่ Google
คุณสามารถเรียกใช้ Google Maps API ได้โดยตรงด้วยการส่งคำขอ API ไปยังเซิร์ฟเวอร์ หรือจะใช้ไลบรารีของไคลเอ็นต์เพื่อลดความซับซ้อนของโค้ดก็ได้ Google Maps มีไลบรารีของไคลเอ็นต์สำหรับ Go, Java, Node.js และ Python ดูข้อมูลเพิ่มเติมได้ที่ไลบรารีของไคลเอ็นต์ Geocoding API
ภาพรวมของ OAuth
คุณสร้างและจัดการโทเค็นเพื่อการเข้าถึงด้วย OAuth ได้หลายวิธี โดยขึ้นอยู่กับสภาพแวดล้อมการติดตั้งใช้งาน
คุณสามารถใช้ OAuth 2.0 สำหรับการโต้ตอบระหว่างเซิร์ฟเวอร์กับเซิร์ฟเวอร์ระหว่างแอปพลิเคชันของคุณกับบริการของ Google ในสถานการณ์นี้ คุณจะใช้บัญชีบริการที่เชื่อมโยงกับแอปพลิเคชันของคุณแทนที่จะเป็นผู้ใช้แต่ละราย คุณสามารถส่งคำขอ API โดยใช้บัญชีบริการโดยไม่ต้องเกี่ยวข้องกับผู้ใช้โดยตรง ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีการตรวจสอบสิทธิ์ได้ที่หัวข้อวิธีการตรวจสอบสิทธิ์ที่ Google
หรือจะผสานรวม Geocoding API เข้ากับแอปบนอุปกรณ์เคลื่อนที่ Android หรือ iOS ก็ได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ OAuth และการจัดการโทเค็นเพื่อการเข้าถึงสำหรับสภาพแวดล้อมการติดตั้งใช้งานต่างๆ ได้ที่หัวข้อการใช้ OAuth 2.0 เพื่อเข้าถึง Google API
ขอบเขต OAuth
หากต้องการใช้ OAuth กับ Geocoding API คุณต้องกำหนดขอบเขตที่ถูกต้องให้กับโทเค็น OAuth Geocoding API รองรับขอบเขตต่อไปนี้
https://www.googleapis.com/auth/maps-platform.geocode- ใช้กับเมธอด Geocoding API ทั้งหมดhttps://www.googleapis.com/auth/maps-platform.destinations- ใช้กับSearchDestinationsสำหรับคำค้นหาปลายทางและการมาถึงเท่านั้นhttps://www.googleapis.com/auth/maps-platform.geocode.address—ใช้กับGeocodeAddressเท่านั้นสำหรับการเข้ารหัสที่อยู่เป็นพิกัดภูมิศาสตร์https://www.googleapis.com/auth/maps-platform.geocode.location- ใช้กับGeocodeLocationเท่านั้นสำหรับการเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับhttps://www.googleapis.com/auth/maps-platform.geocode.place- ใช้กับGeocodePlaceเท่านั้นสำหรับการเข้ารหัสพิกัดภูมิศาสตร์ของสถานที่
นอกจากนี้ คุณยังใช้ขอบเขตทั่วไป https://www.googleapis.com/auth/cloud-platform สำหรับเมธอด Geocoding API ทั้งหมดได้ด้วย ขอบเขตดังกล่าวมีประโยชน์ในระหว่างการพัฒนา เนื่องจากเป็นขอบเขตเริ่มต้นเมื่อคุณสร้างโทเค็นด้วย CLI ของ gcloud
ตัวอย่าง: ลองใช้การเรียก REST API ในสภาพแวดล้อมการพัฒนาซอฟต์แวร์ในเครื่อง
หากไม่มีสภาพแวดล้อมที่สร้างโทเค็นและต้องการลองใช้ Geocoding API กับโทเค็น OAuth ให้ใช้ขั้นตอนในส่วนนี้
ตัวอย่างนี้อธิบายวิธีใช้โทเค็น OAuth ที่ได้จากข้อมูลรับรองเริ่มต้นของแอปพลิเคชัน (ADC) เพื่อทำการเรียก ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ ADC เพื่อเรียกใช้ Google API ด้วยไลบรารีของไคลเอ็นต์ได้ที่หัวข้อตรวจสอบสิทธิ์โดยใช้ไลบรารีของไคลเอ็นต์
ใช้ขั้นตอน REST ต่อไปนี้สำหรับการพัฒนาหรือการทดสอบเท่านั้น ไม่ใช่สำหรับการใช้งานจริง
ข้อกำหนดเบื้องต้น
ก่อนส่งคำขอ REST โดยใช้ ADC ให้ใช้ gcloud CLI เพื่อระบุข้อมูลเข้าสู่ระบบให้กับ ADC ดังนี้
ติดตั้งและเริ่มต้นใช้งาน
gcloudCLI ดูข้อมูลเพิ่มเติมได้ที่ติดตั้ง gcloud CLIตรวจสอบสิทธิ์ด้วย
gcloudCLI โดยทำดังนี้gcloud auth application-default login
ทำตามขั้นตอนการลงชื่อเข้าใช้ให้เสร็จสมบูรณ์เพื่อบันทึกข้อมูลเข้าสู่ระบบในไฟล์ข้อมูลเข้าสู่ระบบในเครื่องที่ ADC ใช้
ดูข้อมูลเพิ่มเติมได้ที่หัวข้อตั้งค่า ADC สำหรับสภาพแวดล้อมในการพัฒนาซอฟต์แวร์ในเครื่อง
ส่งคำขอ REST
ในตัวอย่างนี้ คุณส่งส่วนหัวของคำขอ 2 รายการดังนี้
ส่งโทเค็น OAuth ในส่วนหัว
Authorizationโดยใช้คำสั่งต่อไปนี้เพื่อสร้างโทเค็นgcloud auth application-default print-access-tokenโทเค็นที่แสดงผลมีขอบเขตเป็น
https://www.googleapis.com/auth/cloud-platformส่งรหัสหรือชื่อโปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงินในส่วนหัว
X-Goog-User-Project
หากต้องการเรียกใช้ Geocoding API โดยใช้โทเค็น OAuth ให้ทำตามขั้นตอนต่อไปนี้
ในตัวอย่างโค้ดต่อไปนี้ ให้แทนที่ PROJECT_ID ด้วยรหัสโปรเจ็กต์ Google Cloud
curl -X GET -H 'Content-Type: application/json' \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://geocode.googleapis.com/v4/geocode/address/1600+Amphitheatre+Parkway,+Mountain+View,+CA"
หากต้องการคัดลอกคำสั่ง
curlให้คลิกคัดลอกในตัวอย่างโค้ดวางคำสั่งในหน้าต่างเทอร์มินัล แล้วเรียกใช้
การแก้ปัญหา
หากคำขอแสดงข้อความแสดงข้อผิดพลาดที่ระบุว่า API นี้ไม่รองรับข้อมูลเข้าสู่ระบบของผู้ใช้ปลายทาง โปรดดูหัวข้อแก้ปัญหาการตั้งค่า ADC