การตรวจสอบสิทธิ์และการจัดเตรียม

คุณต้องตรวจสอบสิทธิ์และใช้ข้อมูลเข้าสู่ระบบที่ได้เพื่อเริ่มต้นใช้งานไคลเอ็นต์ 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 Notebook
  • notebook หากเรียกใช้ในสมุดบันทึก Jupyter อื่นๆ ที่ไม่ใช่ของ Colab
  • localhost หากตรวจพบเว็บเบราว์เซอร์และไม่ได้ติดตั้งไบนารี gcloud
  • gcloud สำหรับโหมดนี้ คุณจะต้องติดตั้ง 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 (กรณีในเครื่องและระยะไกล)

  1. ตรวจสอบว่าได้ติดตั้ง gcloud ในเครื่องแล้ว
    • เรียกใช้ gcloud help ในเทอร์มินัล หากยังไม่ได้ติดตั้ง gcloud ให้ทำตามวิธีการเหล่านี้เพื่อติดตั้ง gcloud
  2. เทอร์มินัลในเครื่อง
    • เรียกใช้ earthengine authenticate ในเทอร์มินัล
    • เอาต์พุตของคำสั่งจะระบุว่ามีการใช้ gcloud เพื่อดึงข้อมูลเข้าสู่ระบบ
    • หน้าต่างเบราว์เซอร์จะเปิดขึ้นไปยังหน้าการเลือกบัญชี หากเบราว์เซอร์ไม่เปิดขึ้นโดยอัตโนมัติ ให้คลิก URL
  3. เบราว์เซอร์: การเลือกบัญชี
    • เลือกบัญชีที่ต้องการใช้สำหรับการตรวจสอบสิทธิ์
  4. เบราว์เซอร์: หน้าจอขอความยินยอม
    • ระบุว่าคุณยินดีให้สิทธิ์ตามที่ขอหรือไม่ แล้วคลิก "อนุญาต"
  5. เบราว์เซอร์: หน้าจอยืนยัน
    • เบราว์เซอร์จะแสดงหน้าเว็บที่ยืนยันว่าคุณได้รับการตรวจสอบสิทธิ์แล้ว และคำสั่ง earthengine authenticate ในหน้าต่างเทอร์มินัลจะรายงานว่า "บันทึกโทเค็นการให้สิทธิ์สําเร็จ"
    • ในกรณีที่ไม่อยู่ในพื้นที่ หน้าเว็บจะแสดงโค้ดให้คุณวางกลับไปยังสภาพแวดล้อม Python
  6. ดําเนินการเริ่มต้น

auth_mode=localhost นี่เป็นขั้นตอนที่คล้ายกับ gcloud สำหรับกรณีที่ไม่ได้ติดตั้ง gcloud ซึ่งจะทําขั้นตอนเดียวกับ gcloud แต่ใช้ได้กับกรณีในเครื่องเท่านั้น คุณสามารถระบุหมายเลขพอร์ตอินเทอร์เน็ต (ไม่บังคับ) เช่น localhost:8086 หรือใช้ localhost:0 เพื่อเลือกพอร์ตโดยอัตโนมัติ พอร์ตเริ่มต้นคือ 8085

auth_mode=notebook นี่เป็นโหมดอเนกประสงค์ที่ออกแบบมาเพื่อทำงานในสถานการณ์ระยะไกลที่ไม่มีบรรทัดคำสั่งในเครื่อง ระบบจะนําคุณไปยังหน้าโปรแกรมตรวจสอบสิทธิ์ของ Notebook ซึ่งคุณจะต้องเลือกหรือสร้าง "โปรเจ็กต์การตรวจสอบสิทธิ์" ดูรายละเอียดและคู่มือการแก้ปัญหาได้ที่ด้านล่าง โปรเจ็กต์ที่ส่งไปยัง ee.Initialize() ไม่จำเป็นต้องตรงกับโปรเจ็กต์นี้ คุณสามารถใช้โปรเจ็กต์เดียวกันเพื่อตรวจสอบสิทธิ์ขณะทำงานในโปรเจ็กต์ต่างๆ ในสมุดบันทึกที่แตกต่างกันได้ ขอแนะนําให้ส่งโปรเจ็กต์ไปยัง ee.Initialize() อย่างชัดแจ้ง แต่ระบบจะใช้โปรเจ็กต์การตรวจสอบสิทธิ์โดยค่าเริ่มต้น

วิธีการทีละขั้นตอนสำหรับโหมดโน้ตบุ๊ก

  1. เบราว์เซอร์: Notebook
    1. ในเซลล์โค้ดของโน้ตบุ๊ก ให้เรียกใช้โค้ดต่อไปนี้เพื่อเริ่มขั้นตอนการตรวจสอบสิทธิ์โดยใช้โหมด "โน้ตบุ๊ก"
      import ee
      ee.Authenticate()
      คลิกลิงก์ในเอาต์พุตของเซลล์เพื่อเปิดหน้าโปรแกรมตรวจสอบสิทธิ์ของ Notebook ในแท็บใหม่
  2. เบราว์เซอร์: Authenticator ของสมุดบันทึก
    1. ตรวจสอบว่าบัญชีผู้ใช้ที่ถูกต้องแสดงอยู่ในรายการ
    2. เลือกโปรเจ็กต์ Google Cloud ที่จะใช้สําหรับการตรวจสอบสิทธิ์ หากจำเป็นต้องสร้างโปรเจ็กต์ใหม่ เราขอแนะนำให้ใช้รูปแบบการตั้งชื่อ "ee-xyz" โดยที่ xyz คือชื่อผู้ใช้ Earth Engine ปกติของคุณ (หากเลือกหรือสร้างโปรเจ็กต์ระบบคลาวด์ไม่ได้ โปรดดูส่วนการแก้ปัญหาด้านล่าง)
    3. คลิก "สร้างโทเค็น"
  3. เบราว์เซอร์: การเลือกบัญชี
    • คุณจะเห็นหน้าการเลือกบัญชี คลิกบัญชีผู้ใช้ที่ต้องการให้สิทธิ์เข้าถึงจากโน้ตบุ๊ก
  4. เบราว์เซอร์: หน้าคำเตือน
    • หน้าคำเตือนจะปรากฏขึ้นเพื่อระบุว่า Google ไม่ได้สร้างแอป (โค้ดในสมุดบันทึก) คลิก "ดำเนินการต่อ" เพื่อรับทราบ
  5. เบราว์เซอร์: หน้าจอขอความยินยอม
    • ระบุว่าคุณยินดีให้สิทธิ์ตามขอบเขตที่ขอหรือไม่ แล้วคลิกต่อไป
  6. เบราว์เซอร์: หน้าจอรหัสการให้สิทธิ์
    • คัดลอกรหัสยืนยันการให้สิทธิ์
  7. เบราว์เซอร์: Notebook
    • สลับกลับไปที่แท็บโน้ตบุ๊ก แล้ววางรหัสยืนยันลงในเอาต์พุตของเซลล์โน้ตบุ๊ก
    • เอาต์พุตของเซลล์ควรระบุว่า"บันทึกโทเค็นการให้สิทธิ์สําเร็จ"
  8. ดําเนินการเริ่มต้น

โหมดโน้ตบุ๊กมีพารามิเตอร์ quiet ที่ใช้ไม่ค่อยบ่อย หากตั้งค่าไว้ ระบบจะทำงานแบบ "ไม่โต้ตอบ" และไม่แสดงข้อความแจ้งและรอให้คุณป้อนรหัสการตรวจสอบสิทธิ์ แต่จะให้คําสั่งเพื่อเรียกใช้เพื่อบันทึกรหัสแทน

โปรเจ็กต์การตรวจสอบสิทธิ์

คุณจะต้องเป็นเจ้าของ ผู้แก้ไข และผู้แก้ไขการกําหนดค่า OAuth ในโปรเจ็กต์การตรวจสอบสิทธิ์ที่ใช้ในโหมดโน้ตบุ๊ก ในหลายกรณี โดยเฉพาะในทีมขนาดเล็ก โปรเจ็กต์การตรวจสอบสิทธิ์ที่คุณใช้ในหน้า Notebook Authenticator อาจเป็นโปรเจ็กต์หลักที่คุณใช้สำหรับงานอื่นๆ

"การกำหนดค่าไคลเอ็นต์ OAuth" ในโปรเจ็กต์การตรวจสอบสิทธิ์เป็นการตั้งค่าแบบครั้งเดียวเนื่องจากข้อกังวลด้านความปลอดภัย หากคุณหรือผู้ใช้รายอื่นตั้งค่าไคลเอ็นต์ OAuth ในโปรเจ็กต์ด้วยเหตุผลอื่น ระบบจะนำออกไม่ได้และคุณจะเห็นข้อผิดพลาด "การกำหนดค่าไคลเอ็นต์ OAuth2 ที่เข้ากันไม่ได้" คุณจะต้องตรวจสอบสิทธิ์โดยใช้โปรเจ็กต์อื่น หรือใช้โหมด colab, localhost หรือ gcloud ด้านบน

การแก้ปัญหา

จะเกิดอะไรขึ้นหากฉันสร้างโปรเจ็กต์ Cloud ไม่ได้

บางองค์กรควบคุมผู้ที่มีสิทธิ์สร้างโปรเจ็กต์ในระบบคลาวด์ หากได้รับข้อผิดพลาดในหน้าโปรแกรมตรวจสอบสิทธิ์ของ Notebook เมื่อพยายามสร้างโปรเจ็กต์ ให้ลองทำตามขั้นตอนต่อไปนี้

  1. ลองสร้างโปรเจ็กต์โดยตรงเพื่อยืนยันว่าคุณมีสิทธิ์ที่จำเป็นหรือไม่
  2. โปรดสอบถามผู้ดูแลระบบขององค์กรเพื่อดูว่ามีขั้นตอนใดบ้างในการสร้างโปรเจ็กต์
  3. สร้างโปรเจ็กต์จากบัญชีที่ไม่ใช่ขององค์กร แล้วเพิ่มบัญชีที่คุณใช้ทำงานเป็นเจ้าของโปรเจ็กต์ หมายเหตุ: องค์กรบางแห่งมีนโยบายด้านความปลอดภัยที่ป้องกันไม่ให้เข้าถึงไคลเอ็นต์ 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: เราจะสร้างไคลเอ็นต์การตรวจสอบสิทธิ์ใหม่สำหรับงานของคุณโดยเฉพาะ โดยคุณจะเห็นอีเมลของคุณในหน้าความยินยอม ลูกค้านี้ตั้งค่าไว้ในโหมด "การพัฒนา" ซึ่งเป็นกรณีพิเศษที่อนุญาตให้ใช้โทเค็นโหมดวางแบบเก่า เราต้องใช้โปรเจ็กต์ของคุณเองเนื่องจากไคลเอ็นต์ดังกล่าวแชร์กับผู้ใช้จํานวนมากไม่ได้