คุณต้องตรวจสอบสิทธิ์และใช้ข้อมูลเข้าสู่ระบบที่ได้เพื่อเริ่มต้นใช้งานไคลเอ็นต์ Earth Engine ก่อนจึงจะส่งคำขอไปยัง Earth Engine ผ่านไลบรารีไคลเอ็นต์ได้
ตัวแก้ไขโค้ด Earth Engine และ JavaScript
การตรวจสอบสิทธิ์และอินทิลีเซชันจะจัดการโดยอัตโนมัติในเครื่องมือแก้ไขโค้ด คุณสามารถเลือกกำหนดเส้นทางคำขอผ่านโปรเจ็กต์ที่อยู่ในระบบคลาวด์จากการเข้าสู่ระบบที่ด้านขวาบนของเครื่องมือแก้ไขโค้ด
หากคุณใช้ JavaScript API (นอกเครื่องมือแก้ไขโค้ด) ให้ใช้ตัวช่วยตรวจสอบสิทธิ์อย่างใดอย่างหนึ่งใน ee.data
(เช่น ee.data.authenticateViaPopup()
) ตามด้วย ee.initialize()
ตามที่แสดงในตัวอย่างนี้
Python และบรรทัดคำสั่ง
คุณต้องตรวจสอบสิทธิ์ (ยืนยันตัวตน) และใช้ข้อมูลเข้าสู่ระบบที่ได้เพื่อเริ่มต้นไคลเอ็นต์ Python ก่อนจึงจะใช้ไลบรารีไคลเอ็นต์ Python ของ Earth Engine ได้ ขั้นตอนการตรวจสอบสิทธิ์ใช้ Cloud Projects เพื่อตรวจสอบสิทธิ์ และจะใช้สำหรับการไม่ชำระเงิน (ไม่มีค่าใช้จ่าย ไม่ได้เพื่อการค้า) และการชำระเงิน หากต้องการตรวจสอบสิทธิ์และเริ่มต้น ให้เรียกใช้
ee.Authenticate()
ee.Initialize(project='my-project')
ซึ่งจะเลือกโหมดการตรวจสอบสิทธิ์ที่ดีที่สุดสําหรับสภาพแวดล้อมของคุณก่อน และระบบจะแจ้งให้คุณยืนยันสิทธิ์เข้าถึงสคริปต์ หากมีข้อมูลเข้าสู่ระบบอยู่แล้ว ระบบจะใช้ข้อมูลเข้าสู่ระบบนั้นซ้ำโดยอัตโนมัติ ให้เรียกใช้ ee.Authenticate(force=True)
เพื่อสร้างข้อมูลเข้าสู่ระบบใหม่
ขั้นตอนเริ่มต้นจะยืนยันว่ามีข้อมูลเข้าสู่ระบบที่ถูกต้อง ซึ่งสร้างจาก ee.Authenticate()
หรือเป็นข้อมูลเข้าสู่ระบบเริ่มต้นของ Google อยู่แล้ว จากนั้นจะเริ่มต้นไลบรารีของไคลเอ็นต์ Python ด้วยเมธอดที่เซิร์ฟเวอร์แบ็กเอนด์รองรับ คุณจะต้องระบุโปรเจ็กต์ที่คุณเป็นเจ้าของหรือมีสิทธิ์ใช้ ดูการตั้งค่าโปรเจ็กต์ที่อยู่ในระบบคลาวด์เพื่อลงทะเบียนโปรเจ็กต์และเปิดใช้ Earth Engine API โปรเจ็กต์นี้จะใช้ในการดําเนินการ Earth Engine ทั้งหมด
ในบรรทัดคำสั่ง การเรียกใช้ที่เทียบเท่าคือ earthengine authenticate
หากข้อมูลเข้าสู่ระบบหมดอายุหรือไม่ถูกต้อง คุณอาจต้องเรียกใช้ earthengine
authenticate --force
การเรียกใช้บรรทัดคำสั่งจะเริ่มต้นในการเรียกแต่ละครั้ง และคุณอาจใช้อาร์กิวเมนต์ --project
เพื่อตั้งค่าโปรเจ็กต์
นอกจากนี้ คุณยังกําหนดค่าโปรเจ็กต์สําหรับการเรียกใช้ทั้งหมดในอนาคตได้โดยเรียกใช้ earthengine
set_project {my-project}
บรรทัดคำสั่งและ ee.Initialize()
จะใช้ค่านี้ทุกครั้งที่ไม่ได้ระบุโปรเจ็กต์โดยตรง หากใช้การตรวจสอบสิทธิ์ผ่าน gcloud
(ดูด้านล่าง) ระบบจะใช้โปรเจ็กต์ที่ตั้งค่าโดย gcloud auth application-default
set-quota-project {my-project}
เป็นกรณีสุดท้าย
รายละเอียดการตรวจสอบสิทธิ์
เป้าหมายของขั้นตอนการตรวจสอบสิทธิ์ Earth Engine คือรับ "โทเค็น" ความปลอดภัยจากบัญชีที่ลงชื่อเข้าใช้ ซึ่งสามารถจัดเก็บเพื่อมอบสิทธิ์ให้สคริปต์เข้าถึงข้อมูลของคุณ ระบบการตรวจสอบสิทธิ์ของ Google จะส่งโทเค็นดังกล่าวไปยังระบบที่ปลอดภัยเท่านั้นเพื่อเหตุผลด้านความปลอดภัย ดูหมายเหตุทางเทคนิคด้านล่าง
เนื่องจากระบบที่เกี่ยวข้องมีความอ่อนไหว จึงมีวิธีดำเนินการที่แตกต่างกันไปโดยขึ้นอยู่กับสถานการณ์ของคุณ ตัวเลือกส่วนใหญ่จะควบคุมโดยพารามิเตอร์ auth_mode
ในรูปแบบ ee.Authenticate(auth_mode=...)
หรือ earthengine authenticate --auth_mode=...
ในบรรทัดคำสั่ง
โปรดทราบว่าหากมีข้อมูลเข้าสู่ระบบ Google อยู่ในสภาพแวดล้อมอยู่แล้ว คุณอาจไม่จำเป็นต้องโทรหา ee.Authenticate()
เลย VM ของ Google Cloud, App Engine และสภาพแวดล้อมอื่นๆ จะมี "ข้อมูลเข้าสู่ระบบที่พร้อมใช้งาน" ซึ่งใช้งานได้ และ gcloud auth
application-default login
จะสร้างข้อมูลเข้าสู่ระบบเหล่านี้ด้วย
อย่างไรก็ตาม เราขอแนะนำให้ใส่ ee.Authenticate()
ที่จุดเริ่มต้นของสคริปต์ทั้งหมดเพื่อเพิ่มความเข้ากันได้สูงสุด ในกรณีที่ไม่มีพารามิเตอร์ auth_mode
รูปแบบนี้ออกแบบมาให้ทำงานได้ในทุกสถานการณ์ แต่โปรดทำตามรายละเอียดด้านล่างหากโหมดเริ่มต้นใช้งานไม่ได้
ระบบจะเลือกโหมดเริ่มต้นดังนี้
colab
หากเรียกใช้ใน Google Colab Notebooknotebook
หากเรียกใช้ในสมุดบันทึก Jupyter อื่นๆ ที่ไม่ใช่ของ Colablocalhost
หากตรวจพบเว็บเบราว์เซอร์และไม่ได้ติดตั้งไบนารี gcloudgcloud
สำหรับโหมดนี้ คุณจะต้องติดตั้ง gcloud
คู่มือและตารางอ้างอิงฉบับย่อ
คู่มือการตัดสินใจนี้จะระบุตัวเลือกที่เป็นไปได้ในกรณีที่โหมดเริ่มต้นที่ ee.Authenticate()
เลือกไว้ใช้งานไม่ได้ เช่น หากคุณใช้งานในสภาพแวดล้อมโน้ตบุ๊กอื่นๆ คุณอาจต้องระบุ notebook
อย่างชัดเจน
- สภาพแวดล้อมในเครื่อง
- "ในเครื่อง" หมายความว่าคุณกำลังเรียกใช้โค้ดในเชลล์ Python หรือสมุดบันทึก Python บนเครื่องที่อยู่ตรงหน้าคุณ หรือกล่าวอย่างเจาะจงคือในเครื่องเดียวกับที่เว็บเบราว์เซอร์ทำงานอยู่ ซึ่งรวมถึงกรณีที่ใช้เดสก์ท็อประยะไกลซึ่งทั้ง Python และเบราว์เซอร์อยู่ในเครื่อง (ระยะไกล) เครื่องเดียวกัน
- การใช้
auth_mode=localhost
นั้นง่ายที่สุดและระบบจะเลือกให้โดยค่าเริ่มต้นหากไม่ได้ติดตั้ง gcloud แต่สคริปต์จะทํางานในสภาพแวดล้อมภายในเท่านั้น - ทั้ง
auth_mode=gcloud
และauth_mode=notebook
ก็มีให้บริการเช่นกัน
- สภาพแวดล้อมระยะไกล
- "ระยะไกล" หมายความว่าเบราว์เซอร์อยู่ในเครื่อง (ภายในระบบ) เครื่องหนึ่ง แต่โค้ดทำงานที่อื่น เช่น เวิร์กสเตชันระยะไกลหรือโน้ตบุ๊กบนเว็บ
- หากใช้ Colab ให้ใช้
auth_mode=colab
หรือใช้gcloud
หากต้องการตั้งค่าscopes
เพื่อเรียกใช้ API อื่นๆ - หากติดตั้ง gcloud ได้ทั้งบนเครื่องระยะไกลและเครื่องของคุณ ให้ใช้
auth_mode=gcloud
- หากใช้โปรเจ็กต์การตรวจสอบสิทธิ์ได้ (ดูด้านล่าง) ให้ใช้
auth_mode=notebook
- หรือหากใช้โปรเจ็กต์หรือติดตั้ง gcloud หรือใช้ Colab หรือใช้เบราว์เซอร์ในเครื่องเดียวกันไม่ได้ ให้ทำดังนี้
- พูดคุยกับผู้ดูแลระบบ (อีกครั้ง) เกี่ยวกับการสร้างโปรเจ็กต์ เช่น
- ขอให้ผู้ดูแลระบบกําหนดค่าโปรเจ็กต์ให้คุณ (ในฐานะเจ้าของหรือผู้แก้ไข หรือผู้แก้ไขการกําหนดค่า OAuth)
- หรือขอให้ผู้ดูแลระบบให้สิทธิ์คุณสร้างโปรเจ็กต์
ตารางนี้แสดงการผสมผสานฟีเจอร์ที่โหมดแต่ละโหมดรองรับ
สำหรับอุปกรณ์ที่ใช้งานอยู่หรืออุปกรณ์ระยะไกล | ต้องมีโปรเจ็กต์ | ขอบเขตที่ตั้งค่าได้ | ต้องใช้ CLI ในพื้นที่ | เจ้าของโปรเจ็กต์ | |
---|---|---|---|---|---|
localhost |
local | Y | ได้ | ไม่ | N |
colab |
รีโมต | Y | ไม่ | ไม่ | N |
gcloud |
ทั้งคู่ | Y | ได้ | ไม่ | N |
notebook |
ทั้งคู่ | Y | ได้ | ไม่ | Y |
ข้อมูลเข้าสู่ระบบสำหรับบัญชีบริการและ Compute Engine
ee.Initialize()
จะใช้ข้อมูลเข้าสู่ระบบ Earth Engine (ซึ่ง ee.Authenticate()
จัดเก็บไว้ใน ~/.config/earthengine/credentials
) หรือดึงข้อมูลเข้าสู่ระบบจาก google.auth.default()
แต่หากจำเป็น คุณสามารถส่งอาร์กิวเมนต์ credentials=
เพื่อใช้ข้อมูลเข้าสู่ระบบจากที่อื่นโดยข้ามค่าเริ่มต้นเหล่านี้
หากคุณกำลังตรวจสอบสิทธิ์โค้ด Python ที่จะทำงานโดยไม่มีผู้ใช้ดูแล คุณอาจต้องตรวจสอบสิทธิ์ด้วยบัญชีบริการแทนบัญชีผู้ใช้ ดูเอกสารเหล่านี้เพื่อใช้บัญชีบริการกับ Earth Engine วิธีการอื่นๆ ได้แก่ authenticate_service_account
ในโมดูลการตรวจสอบสิทธิ์ของ Colab และวิธีการที่อธิบายไว้ในคู่มือการตรวจสอบสิทธิ์ในฐานะบัญชีบริการของ Cloud
หากโค้ดของคุณทำงานบน Compute Engine VM ระบบจะสร้างบัญชีบริการเริ่มต้นสำหรับสภาพแวดล้อม ซึ่ง ee.Initialize()
จะใช้โดยค่าเริ่มต้น คุณอาจต้องลงทะเบียนบัญชีบริการเพื่อใช้ Earth Engine หากโปรเจ็กต์ที่อยู่ในระบบคลาวด์ซึ่งเริ่มต้น VM ไม่ได้ลงทะเบียนเพื่อใช้กับ Earth Engine (เชิงพาณิชย์หรือไม่เชิงพาณิชย์)
รายละเอียดเกี่ยวกับโหมด
auth_mode=colab ee.Authenticate()
จะสร้างหรือรับข้อมูลเข้าสู่ระบบเริ่มต้นที่ Colab รองรับโดยเรียกใช้ colab.auth.authenticate_user()
หากจําเป็น ข้อมูลเข้าสู่ระบบจะใช้ขอบเขต cloud-platform
เสมอ และยังสามารถใช้เพื่อเรียกใช้ Cloud API อื่นๆ ได้ด้วย
auth_mode=gcloud ซึ่งจะมอบสิทธิ์การตรวจสอบสิทธิ์ให้กับเครื่องมือ gcloud และเหมือนกับการเรียกใช้ gcloud auth application-default login
ด้วยขอบเขต Earth Engine เริ่มต้น (earthengine, cloud-platform และ drive) หรือขอบเขตในอาร์กิวเมนต์ scopes
โหมด gcloud
ใช้ได้ทั้งในแบบในเครื่องและแบบระยะไกล
วิธีการทีละขั้นตอนสำหรับโหมด gcloud (กรณีในเครื่องและระยะไกล)
- ตรวจสอบว่าได้ติดตั้ง gcloud ในเครื่องแล้ว
- เรียกใช้
gcloud help
ในเทอร์มินัล หากยังไม่ได้ติดตั้ง gcloud ให้ทำตามวิธีการเหล่านี้เพื่อติดตั้ง gcloud
- เรียกใช้
- เทอร์มินัลในเครื่อง
- เรียกใช้
earthengine authenticate
ในเทอร์มินัล - เอาต์พุตของคำสั่งจะระบุว่ามีการใช้ gcloud เพื่อดึงข้อมูลเข้าสู่ระบบ
- หน้าต่างเบราว์เซอร์จะเปิดขึ้นไปยังหน้าการเลือกบัญชี หากเบราว์เซอร์ไม่เปิดขึ้นโดยอัตโนมัติ ให้คลิก URL
- เรียกใช้
- เบราว์เซอร์: การเลือกบัญชี
- เลือกบัญชีที่ต้องการใช้สำหรับการตรวจสอบสิทธิ์
- เบราว์เซอร์: หน้าจอขอความยินยอม
- ระบุว่าคุณยินดีให้สิทธิ์ตามที่ขอหรือไม่ แล้วคลิก "อนุญาต"
- เบราว์เซอร์: หน้าจอยืนยัน
- เบราว์เซอร์จะแสดงหน้าเว็บที่ยืนยันว่าคุณได้รับการตรวจสอบสิทธิ์แล้ว และคำสั่ง
earthengine authenticate
ในหน้าต่างเทอร์มินัลจะรายงานว่า "บันทึกโทเค็นการให้สิทธิ์สําเร็จ" - ในกรณีที่ไม่อยู่ในพื้นที่ หน้าเว็บจะแสดงโค้ดให้คุณวางกลับไปยังสภาพแวดล้อม Python
- เบราว์เซอร์จะแสดงหน้าเว็บที่ยืนยันว่าคุณได้รับการตรวจสอบสิทธิ์แล้ว และคำสั่ง
- ดําเนินการเริ่มต้น
auth_mode=localhost นี่เป็นขั้นตอนที่คล้ายกับ gcloud สำหรับกรณีที่ไม่ได้ติดตั้ง gcloud ซึ่งจะทําขั้นตอนเดียวกับ gcloud แต่ใช้ได้กับกรณีในเครื่องเท่านั้น คุณสามารถระบุหมายเลขพอร์ตอินเทอร์เน็ต (ไม่บังคับ) เช่น localhost:8086
หรือใช้ localhost:0
เพื่อเลือกพอร์ตโดยอัตโนมัติ พอร์ตเริ่มต้นคือ 8085
auth_mode=notebook นี่เป็นโหมดอเนกประสงค์ที่ออกแบบมาเพื่อทำงานในสถานการณ์ระยะไกลที่ไม่มีบรรทัดคำสั่งในเครื่อง ระบบจะนําคุณไปยังหน้าโปรแกรมตรวจสอบสิทธิ์ของ Notebook ซึ่งคุณจะต้องเลือกหรือสร้าง "โปรเจ็กต์การตรวจสอบสิทธิ์" ดูรายละเอียดและคู่มือการแก้ปัญหาได้ที่ด้านล่าง โปรเจ็กต์ที่ส่งไปยัง ee.Initialize()
ไม่จำเป็นต้องตรงกับโปรเจ็กต์นี้ คุณสามารถใช้โปรเจ็กต์เดียวกันเพื่อตรวจสอบสิทธิ์ขณะทำงานในโปรเจ็กต์ต่างๆ ในสมุดบันทึกที่แตกต่างกันได้ ขอแนะนําให้ส่งโปรเจ็กต์ไปยัง ee.Initialize()
อย่างชัดแจ้ง แต่ระบบจะใช้โปรเจ็กต์การตรวจสอบสิทธิ์โดยค่าเริ่มต้น
วิธีการทีละขั้นตอนสำหรับโหมดโน้ตบุ๊ก
- เบราว์เซอร์: Notebook
- ในเซลล์โค้ดของโน้ตบุ๊ก ให้เรียกใช้โค้ดต่อไปนี้เพื่อเริ่มขั้นตอนการตรวจสอบสิทธิ์โดยใช้โหมด "โน้ตบุ๊ก"
คลิกลิงก์ในเอาต์พุตของเซลล์เพื่อเปิดหน้าโปรแกรมตรวจสอบสิทธิ์ของ Notebook ในแท็บใหม่import ee ee.Authenticate()
- ในเซลล์โค้ดของโน้ตบุ๊ก ให้เรียกใช้โค้ดต่อไปนี้เพื่อเริ่มขั้นตอนการตรวจสอบสิทธิ์โดยใช้โหมด "โน้ตบุ๊ก"
- เบราว์เซอร์: Authenticator ของสมุดบันทึก
- ตรวจสอบว่าบัญชีผู้ใช้ที่ถูกต้องแสดงอยู่ในรายการ
- เลือกโปรเจ็กต์ Google Cloud ที่จะใช้สําหรับการตรวจสอบสิทธิ์ หากจำเป็นต้องสร้างโปรเจ็กต์ใหม่ เราขอแนะนำให้ใช้รูปแบบการตั้งชื่อ "ee-xyz" โดยที่ xyz คือชื่อผู้ใช้ Earth Engine ปกติของคุณ (หากเลือกหรือสร้างโปรเจ็กต์ระบบคลาวด์ไม่ได้ โปรดดูส่วนการแก้ปัญหาด้านล่าง)
- คลิก "สร้างโทเค็น"
- เบราว์เซอร์: การเลือกบัญชี
- คุณจะเห็นหน้าการเลือกบัญชี คลิกบัญชีผู้ใช้ที่ต้องการให้สิทธิ์เข้าถึงจากโน้ตบุ๊ก
- เบราว์เซอร์: หน้าคำเตือน
- หน้าคำเตือนจะปรากฏขึ้นเพื่อระบุว่า Google ไม่ได้สร้างแอป (โค้ดในสมุดบันทึก) คลิก "ดำเนินการต่อ" เพื่อรับทราบ
- เบราว์เซอร์: หน้าจอขอความยินยอม
- ระบุว่าคุณยินดีให้สิทธิ์ตามขอบเขตที่ขอหรือไม่ แล้วคลิกต่อไป
- เบราว์เซอร์: หน้าจอรหัสการให้สิทธิ์
- คัดลอกรหัสยืนยันการให้สิทธิ์
- เบราว์เซอร์: Notebook
- สลับกลับไปที่แท็บโน้ตบุ๊ก แล้ววางรหัสยืนยันลงในเอาต์พุตของเซลล์โน้ตบุ๊ก
- เอาต์พุตของเซลล์ควรระบุว่า"บันทึกโทเค็นการให้สิทธิ์สําเร็จ"
- ดําเนินการเริ่มต้น
โหมดโน้ตบุ๊กมีพารามิเตอร์ quiet
ที่ใช้ไม่ค่อยบ่อย หากตั้งค่าไว้ ระบบจะทำงานแบบ "ไม่โต้ตอบ" และไม่แสดงข้อความแจ้งและรอให้คุณป้อนรหัสการตรวจสอบสิทธิ์
แต่จะให้คําสั่งเพื่อเรียกใช้เพื่อบันทึกรหัสแทน
โปรเจ็กต์การตรวจสอบสิทธิ์
คุณจะต้องเป็นเจ้าของ ผู้แก้ไข และผู้แก้ไขการกําหนดค่า OAuth ในโปรเจ็กต์การตรวจสอบสิทธิ์ที่ใช้ในโหมดโน้ตบุ๊ก ในหลายกรณี โดยเฉพาะในทีมขนาดเล็ก โปรเจ็กต์การตรวจสอบสิทธิ์ที่คุณใช้ในหน้า Notebook Authenticator อาจเป็นโปรเจ็กต์หลักที่คุณใช้สำหรับงานอื่นๆ
"การกำหนดค่าไคลเอ็นต์ OAuth" ในโปรเจ็กต์การตรวจสอบสิทธิ์เป็นการตั้งค่าแบบครั้งเดียวเนื่องจากข้อกังวลด้านความปลอดภัย หากคุณหรือผู้ใช้รายอื่นตั้งค่าไคลเอ็นต์ OAuth ในโปรเจ็กต์ด้วยเหตุผลอื่น ระบบจะนำออกไม่ได้และคุณจะเห็นข้อผิดพลาด "การกำหนดค่าไคลเอ็นต์ OAuth2 ที่เข้ากันไม่ได้" คุณจะต้องตรวจสอบสิทธิ์โดยใช้โปรเจ็กต์อื่น หรือใช้โหมด colab, localhost หรือ gcloud ด้านบน
การแก้ปัญหา
จะเกิดอะไรขึ้นหากฉันสร้างโปรเจ็กต์ Cloud ไม่ได้
บางองค์กรควบคุมผู้ที่มีสิทธิ์สร้างโปรเจ็กต์ในระบบคลาวด์ หากได้รับข้อผิดพลาดในหน้าโปรแกรมตรวจสอบสิทธิ์ของ Notebook เมื่อพยายามสร้างโปรเจ็กต์ ให้ลองทำตามขั้นตอนต่อไปนี้
- ลองสร้างโปรเจ็กต์โดยตรงเพื่อยืนยันว่าคุณมีสิทธิ์ที่จำเป็นหรือไม่
- โปรดสอบถามผู้ดูแลระบบขององค์กรเพื่อดูว่ามีขั้นตอนใดบ้างในการสร้างโปรเจ็กต์
- สร้างโปรเจ็กต์จากบัญชีที่ไม่ใช่ขององค์กร แล้วเพิ่มบัญชีที่คุณใช้ทำงานเป็นเจ้าของโปรเจ็กต์ หมายเหตุ: องค์กรบางแห่งมีนโยบายด้านความปลอดภัยที่ป้องกันไม่ให้เข้าถึงไคลเอ็นต์ OAuth จากโปรเจ็กต์ภายนอก
ข้อผิดพลาด: "ไม่เคยมีการใช้ Earth Engine API ในโปรเจ็กต์ XXX มาก่อนหรือถูกปิดใช้"
ขั้นแรก ให้ตรวจสอบว่าคุณได้กำหนดค่าโปรเจ็กต์ใน ee.Initialize()
หรือในบรรทัดคำสั่งแล้ว (โปรเจ็กต์เริ่มต้นที่ Cloud และ Colab มีให้จะไม่เปิดใช้ Earth Engine) ประการที่ 2 ให้ตรวจสอบว่า Earth Engine API
เปิดใช้ในโปรเจ็กต์แล้ว
ข้อผิดพลาด: "โปรเจ็กต์มีการกําหนดค่าไคลเอ็นต์ OAuth2 ที่เข้ากันไม่ได้"
โปรเจ็กต์ระบบคลาวด์มีการกําหนดค่าไคลเอ็นต์ OAuth2 ได้เพียงรายการเดียวเท่านั้น คุณสามารถตรวจสอบว่าโปรเจ็กต์ที่อยู่ในระบบคลาวด์มีการกําหนดค่าไคลเอ็นต์ OAuth2 หรือไม่โดยดูที่รหัสไคลเอ็นต์ OAuth 2.0 ในหน้าข้อมูลเข้าสู่ระบบ คุณต้องเลือกโปรเจ็กต์ Cloud อื่นที่มีการกำหนดค่าที่เข้ากันได้ซึ่ง Notebook Authenticator ตั้งค่าไว้แล้ว หรือเลือกหรือสร้างโปรเจ็กต์ Cloud ที่ไม่มีไคลเอ็นต์ OAuth2 โปรแกรมตรวจสอบสิทธิ์จะกําหนดค่าโปรเจ็กต์นี้โดยอัตโนมัติ ขออภัย ระบบ OAuth ไม่อนุญาตให้ผู้ใช้ลบการกำหนดค่าได้ คุณจึงต้องใช้โปรเจ็กต์อื่น โปรเจ็กต์นี้ไม่จำเป็นต้องเป็นโปรเจ็กต์เดียวกับที่ใช้สำหรับงานอื่นๆ ของ Earth Engine โปรดทราบว่าข้อผิดพลาดนี้จะไม่เกิดขึ้นในโหมด Colab
ข้อผิดพลาด: "gcloud failed. โปรดตรวจสอบข้อผิดพลาดด้านบนและติดตั้ง gcloud หากจำเป็น"
ข้อผิดพลาดนี้อาจเกิดขึ้นหากไม่ได้ติดตั้ง gcloud หรือ gcloud ไม่ได้อยู่ใน PATH นอกจากนี้ยังอาจเกิดขึ้นหากคุณเรียกใช้ ee.Authenticate(auth_mode='gcloud')
จากภายในเซลล์โค้ดของสมุดบันทึก ให้ใช้ ee.Authenticate()
แทน ซึ่งจะใช้การตรวจสอบสิทธิ์โหมดโน้ตบุ๊กเป็นค่าเริ่มต้น หากสร้างโปรเจ็กต์ไม่ได้ โปรดดูวิธีแก้ปัญหาด้านบน
จะเกิดอะไรขึ้นหากฉันไม่มีสิทธิ์เข้าถึงเครื่องคอมพิวเตอร์ในเครื่องเพื่อติดตั้ง gcloud
หากคุณทํางานในสภาพแวดล้อมแบบเว็บเท่านั้นโดยไม่มีสิทธิ์เข้าถึงเทอร์มินัลในเครื่อง และยังคงต้องใช้เทอร์มินัลระยะไกล คุณจะยังคงเริ่มต้นเครื่องมือบรรทัดคําสั่งได้โดยเรียกใช้โหมดโน้ตบุ๊กด้วยคําสั่ง earthengine
authenticate --auth_mode=notebook
ข้อผิดพลาด 400: redirect_uri_mismatch
คุณอาจได้รับข้อผิดพลาดนี้หากตรวจสอบสิทธิ์ในเครื่องระยะไกลที่ไม่มีสิทธิ์เข้าถึงเว็บเบราว์เซอร์ ลองเพิ่ม --quiet
หากเรียกใช้ earthengine authenticate
จากบรรทัดคำสั่ง หรือ ee.Authenticate(quiet=True)
หากใช้ไคลเอ็นต์ Python ซึ่งคุณจะต้องตรวจสอบสิทธิ์กับ gcloud
จากเครื่องที่มีสิทธิ์เข้าถึงเว็บเบราว์เซอร์
ข้อผิดพลาด: "แอปพลิเคชันของคุณกำลังตรวจสอบสิทธิ์โดยใช้ข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชันภายใน API ของ earthengine.googleapis.com ต้องใช้โปรเจ็กต์โควต้า ซึ่งไม่ได้ตั้งค่าไว้โดยค่าเริ่มต้น"
ข้อผิดพลาดนี้อาจเกิดขึ้นเมื่อ Earth Engine ระบุรหัสโปรเจ็กต์ไม่ได้ หากตัวเลือกการแก้ปัญหาของ Google Cloud ไม่ได้ผล ให้ลองเรียกใช้ earthengine set_project YOUR_PROJECT_ID
หรือ gcloud
auth application-default set-quota-project YOUR_PROJECT_ID
หมายเหตุทางเทคนิค
สําหรับผู้ที่สนใจด้านเทคนิค: ความจำเป็นในการใช้กลไกการสร้างข้อมูลเข้าสู่ระบบที่แตกต่างกันเหล่านี้มาจากความจำเป็นในการส่งข้อมูลเข้าสู่ระบบไปยังสภาพแวดล้อมที่รู้จักและเชื่อถือได้ ต่อไปนี้เป็นตัวอย่างสั้นๆ ของกรณีต่างๆ ข้างต้น
- ก่อนหน้านี้มีโหมด
paste
ซึ่งจะให้โทเค็นสำหรับวางไว้ที่ใดก็ได้ แต่เราพบว่าโหมดนี้เสี่ยงเกินไปและได้ยกเลิกไปแล้ว colab
:auth.authenticate_user()
จะแจ้งให้คุณแชร์ข้อมูลเข้าสู่ระบบกับไคลเอ็นต์การตรวจสอบสิทธิ์ "Colab" ซึ่งเป็นสภาพแวดล้อมโน้ตบุ๊ก จากนั้นgoogle.auth.default()
จะใช้ข้อมูลเหล่านี้ได้ee.Initialize()
localhost
: ระบบจะส่งข้อมูลเข้าสู่ระบบจากเบราว์เซอร์ไปยังพอร์ตในเครื่อง ในกรณีนี้ ความปลอดภัยจากต้นทางถึงปลายทางจะขึ้นอยู่กับว่าเครื่องของคุณไม่ได้รับการบุกรุก โปรแกรมรับส่งอีเมลที่คุณจะเห็นคือ "โปรแกรมตรวจสอบสิทธิ์ Earth Engine"gcloud
: การดำเนินการนี้จะใช้ขั้นตอน--launch-browser
ที่อธิบายไว้ในการอ้างอิง gcloud และ--no-launch-browser
หากอยู่ในเครื่องระยะไกล ไคลเอ็นต์การให้สิทธิ์ที่ใช้คือ "Google Auth Library"notebook
: เราจะสร้างไคลเอ็นต์การตรวจสอบสิทธิ์ใหม่สำหรับงานของคุณโดยเฉพาะ โดยคุณจะเห็นอีเมลของคุณในหน้าความยินยอม ลูกค้านี้ตั้งค่าไว้ในโหมด "การพัฒนา" ซึ่งเป็นกรณีพิเศษที่อนุญาตให้ใช้โทเค็นโหมดวางแบบเก่า เราต้องใช้โปรเจ็กต์ของคุณเองเนื่องจากไคลเอ็นต์ดังกล่าวแชร์กับผู้ใช้จํานวนมากไม่ได้