XR_ANDROID_google_cloud_auth
Name String
XR_ANDROID_google_cloud_auth
ประเภทส่วนขยาย
ส่วนขยายอินสแตนซ์
หมายเลขต่อที่ลงทะเบียนไว้
788
การแก้ไข
1
สถานะการให้สัตยาบัน
ไม่ได้รับการให้สัตยาบัน
ทรัพยากร Dependency ของส่วนขยายและเวอร์ชัน
XR_EXT_future
วันที่แก้ไขล่าสุด
2025-12-18
สถานะ IP
ไม่มีการอ้างสิทธิ์ IP ที่ทราบ
ผู้เขียน
John Ullman, Google
Ben King, Google
Nihav Jain, Google
Jared Finder, Google
ภาพรวม
ส่วนขยายนี้ช่วยให้สามารถใช้ส่วนขยายที่อิงตาม Google Cloud โดยอนุญาตให้แอปพลิเคชันระบุข้อมูลเข้าสู่ระบบการตรวจสอบสิทธิ์สำหรับ Google Cloud APIs นักพัฒนาแอปต้องใช้คอนโซล Google Cloud ( https://console.cloud.google.com/) เพื่อสร้างโปรเจ็กต์ Google Cloud สำหรับแอปพลิเคชัน ส่วนขยายนี้ต้องใช้ส่วนขยาย XR_EXT_future
ในระหว่างการพัฒนา แอปพลิเคชันสามารถแก้ไขข้อบกพร่องเกี่ยวกับปัญหาการตั้งค่า Google Cloud โดยใช้ส่วนขยาย XR_EXT_debug_utils หากแอปพลิเคชันมี Debug Messenger และเกิดข้อผิดพลาดที่อาจดำเนินการได้ในรันไทม์เมื่อส่งคำขอไปยัง Google Cloud ในนามของแอปพลิเคชัน รันไทม์จะเรียกใช้ Callback ของ Messenger พร้อมข้อความแสดงข้อผิดพลาด ในกรณีนี้ นักพัฒนาแอปควรอ่านข้อความแสดงข้อผิดพลาดและเอกสารประกอบทั้งหมดที่มีอยู่ จากนั้นตรวจสอบว่าได้ตั้งค่าแอปพลิเคชันและโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google Cloud อย่างถูกต้องเพื่อใช้ Cloud APIs ของ Google Cloud รันไทม์ต้องใช้ประเภทข้อความ XR_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT, ความรุนแรง XR_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT และ messageId "GoogleCloudError"
การตรวจสอบสิทธิ์
โครงสร้าง XrGoogleCloudAuthInfoBaseHeaderANDROID มีคำจำกัดความดังนี้
typedef struct XrGoogleCloudAuthInfoBaseHeaderANDROID {
XrStructureType type;
const void* next;
} XrGoogleCloudAuthInfoBaseHeaderANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือตัวชี้ไปยังโครงสร้างถัดไปในเชนโครงสร้าง
โครงสร้างนี้ไม่ได้ใช้ใน API โดยตรง แต่ได้รับการขยายโดยโครงสร้างอื่นๆ ที่สามารถใช้กับ xrSetGoogleCloudAuthAsyncANDROID เพื่อระบุข้อมูลรับรองการตรวจสอบสิทธิ์
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_google_cloud_authก่อนใช้ XrGoogleCloudAuthInfoBaseHeaderANDROID -
typeต้องเป็นค่า XrStructureType ค่าใดค่าหนึ่งต่อไปนี้XR_TYPE_GOOGLE_CLOUD_AUTH_INFO_API_KEY_ANDROID,XR_TYPE_GOOGLE_CLOUD_AUTH_INFO_KEYLESS_ANDROID,XR_TYPE_GOOGLE_CLOUD_AUTH_INFO_TOKEN_ANDROID -
nextต้องเป็นNULLหรือพอยน์เตอร์ที่ถูกต้องไปยังโครงสร้างถัดไปในเชนโครงสร้าง ดูเพิ่มเติม: XrGoogleCloudAuthErrorResultANDROID
โครงสร้าง XrGoogleCloudAuthInfoApiKeyANDROID มีคำจำกัดความดังนี้
typedef struct XrGoogleCloudAuthInfoApiKeyANDROID {
XrStructureType type;
const void* next;
const char* apiKey;
} XrGoogleCloudAuthInfoApiKeyANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือตัวชี้ไปยังโครงสร้างถัดไปในเชนโครงสร้างapiKeyคือตัวชี้ไปยังสตริงที่แสดงถึงคีย์ API
เมื่อส่งโครงสร้างนี้ไปยัง xrSetGoogleCloudAuthAsyncANDROID สมาชิก apiKey ต้องเป็นสตริง ASCII ที่ไม่ว่างเปล่าและไม่มีการเว้นวรรคหรืออักขระควบคุม ไม่เช่นนั้นรันไทม์ต้องแสดงผล XR_ERROR_VALIDATION_FAILURE
apiKey ต้องเป็นไปตามเงื่อนไขต่อไปนี้เพิ่มเติม
- โดยต้องเป็นคีย์ API ที่ถูกต้องซึ่งสร้างขึ้นสำหรับโปรเจ็กต์ที่อยู่ในระบบคลาวด์ Google ของคุณ
- โปรเจ็กต์ Google Cloud ของคุณต้องเปิดใช้ Google Cloud API ที่เกี่ยวข้อง (ระบุโดยส่วนขยายที่เกี่ยวข้อง)
- หากคีย์ API มีข้อจำกัด ข้อจำกัดดังกล่าวต้องอนุญาต Google Cloud API ที่เกี่ยวข้องและแอปพลิเคชันของคุณ
ไม่เช่นนั้น การเรียกใช้ xrSetGoogleCloudAuthAsyncANDROID จะสำเร็จ แต่การเรียกใช้ฟังก์ชันทั้งหมดที่ขึ้นอยู่กับการให้สิทธิ์ระบบคลาวด์จะทำงานตามที่ระบุไว้สำหรับความล้มเหลวของระบบคลาวด์ในส่วนขยายที่กำหนดฟังก์ชันเหล่านั้น หากฟังก์ชันสามารถรายงานความล้มเหลวและแอปพลิเคชันเชื่อมโยง XrGoogleCloudAuthErrorResultANDROID กับพารามิเตอร์เอาต์พุตของฟังก์ชันนั้น รันไทม์ต้องตั้งค่า XrGoogleCloudAuthErrorResultANDROID :: error เป็น XR_GOOGLE_CLOUD_AUTH_ERROR_ANDROID เพื่อระบุข้อผิดพลาดนี้
การดำเนินการแบบอะซิงโครนัสจะเสร็จสมบูรณ์ด้วย XR_SUCCESS เมื่อคีย์ API ได้รับการตรวจสอบการจัดรูปแบบและจัดเก็บโดยรันไทม์
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_google_cloud_authก่อนที่จะใช้ XrGoogleCloudAuthInfoApiKeyANDROID -
typeต้องเป็นXR_TYPE_GOOGLE_CLOUD_AUTH_INFO_API_KEY_ANDROID -
nextต้องเป็นNULLหรือพอยน์เตอร์ที่ถูกต้องไปยังโครงสร้างถัดไปในเชนโครงสร้าง -
apiKeyต้องเป็นสตริง UTF-8 ที่สิ้นสุดด้วยค่า Null
โครงสร้าง XrGoogleCloudAuthInfoTokenANDROID มีคำจำกัดความดังนี้
typedef struct XrGoogleCloudAuthInfoTokenANDROID {
XrStructureType type;
const void* next;
const char* authToken;
} XrGoogleCloudAuthInfoTokenANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือตัวชี้ไปยังโครงสร้างถัดไปในเชนโครงสร้างauthTokenเป็นตัวชี้ไปยังสตริงที่แสดงโทเค็นการตรวจสอบสิทธิ์
เมื่อส่งโครงสร้างนี้ไปยัง xrSetGoogleCloudAuthAsyncANDROID สมาชิก authToken ต้องเป็นสตริง ASCII ที่ไม่ว่างเปล่าและไม่มีการเว้นวรรคหรืออักขระควบคุม ไม่เช่นนั้นรันไทม์ต้องแสดงผล XR_ERROR_VALIDATION_FAILURE authToken ต้องเป็นไปตามเงื่อนไขต่อไปนี้ด้วย
- โดยต้องเป็นข้อมูลเข้าสู่ระบบที่ถูกต้องและยังไม่หมดอายุซึ่งสร้างขึ้นสำหรับโปรเจ็กต์ Google Cloud ของคุณ
- โปรเจ็กต์ Google Cloud ของคุณต้องเปิดใช้ Google Cloud API ที่เกี่ยวข้อง (ระบุโดยส่วนขยายที่เกี่ยวข้อง)
ข้อมูลเข้าสู่ระบบต้องเป็นอย่างใดอย่างหนึ่งต่อไปนี้
- โทเค็นเพื่อการเข้าถึง OAuth2 ที่มีขอบเขตที่เกี่ยวข้อง ซึ่งสร้างขึ้นโดยการลงชื่อเข้าใช้บัญชี Google ด้วยแอปพลิเคชันของคุณ หรือ
- โทเค็น JWT ที่ลงชื่อพร้อมการอ้างสิทธิ์ที่เกี่ยวข้อง ซึ่งสร้างโดยบัญชีบริการจากโปรเจ็กต์ Google Cloud
ข้อกำหนดในแต่ละกรณีจะระบุโดยส่วนขยายที่เกี่ยวข้อง ไม่เช่นนั้น การเรียกใช้ xrSetGoogleCloudAuthAsyncANDROID จะสำเร็จ แต่การเรียกใช้ฟังก์ชันทั้งหมดที่ขึ้นอยู่กับการให้สิทธิ์ระบบคลาวด์จะทำงานตามที่ระบุไว้สำหรับความล้มเหลวของระบบคลาวด์ในส่วนขยายที่กำหนดฟังก์ชันเหล่านั้น หากฟังก์ชันสามารถรายงานความล้มเหลวและแอปพลิเคชันเชื่อมโยง XrGoogleCloudAuthErrorResultANDROID กับพารามิเตอร์เอาต์พุตของฟังก์ชันนั้น รันไทม์ต้องตั้งค่า XrGoogleCloudAuthErrorResultANDROID :: error เป็น XR_GOOGLE_CLOUD_AUTH_ERROR_ANDROID เพื่อระบุข้อผิดพลาดนี้
แอปพลิเคชันต้องส่งโทเค็นใหม่ผ่าน xrSetGoogleCloudAuthAsyncANDROID ในเชิงรุกก่อนที่โทเค็นเก่าจะหมดอายุ รันไทม์ต้องใช้โทเค็นล่าสุดที่แอปพลิเคชันส่งมาเมื่อเริ่มคำขอเครือข่ายใหม่
การดำเนินการแบบอะซิงโครนัสจะเสร็จสมบูรณ์ด้วย XR_SUCCESS เมื่อโทเค็นได้รับการตรวจสอบความถูกต้องสำหรับการจัดรูปแบบและจัดเก็บโดยรันไทม์
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_google_cloud_authก่อนใช้ XrGoogleCloudAuthInfoTokenANDROID -
typeต้องเป็นXR_TYPE_GOOGLE_CLOUD_AUTH_INFO_TOKEN_ANDROID -
nextต้องเป็นNULLหรือพอยน์เตอร์ที่ถูกต้องไปยังโครงสร้างถัดไปในเชนโครงสร้าง -
authTokenต้องเป็นสตริง UTF-8 ที่สิ้นสุดด้วยค่า Null
โครงสร้าง XrGoogleCloudAuthInfoKeylessANDROID มีคำจำกัดความดังนี้
typedef struct XrGoogleCloudAuthInfoKeylessANDROID {
XrStructureType type;
const void* next;
} XrGoogleCloudAuthInfoKeylessANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือตัวชี้ไปยังโครงสร้างถัดไปในเชนโครงสร้าง
เมื่อส่งโครงสร้างนี้ไปยัง xrSetGoogleCloudAuthAsyncANDROID รันไทม์อาจสร้างข้อมูลเข้าสู่ระบบแบบไดนามิก (เช่น ใน Android รันไทม์จะสื่อสารกับบริการ Google Play จากกระบวนการของแอปพลิเคชัน) หากตั้งค่าการตรวจสอบสิทธิ์แบบไม่ใช้คีย์ไม่ถูกต้อง รันไทม์อาจแสดงผล XR_ERROR_KEYLESS_AUTH_NOT_SETUP_ANDROID แบบซิงโครนัส
การดำเนินการแบบอะซิงโครนัสจะส่งคำขอเครือข่ายที่จำเป็นเพื่อดึงข้อมูลเข้าสู่ระบบ ผลลัพธ์ของการดำเนินการนี้จะแสดงใน XrFutureCompletionEXT :: futureResult จาก xrSetGoogleCloudAuthCompleteANDROID หากผลลัพธ์ในอนาคตคือ XR_SUCCESS แสดงว่าระบบใช้ข้อมูลเข้าสู่ระบบสำหรับการตรวจสอบสิทธิ์แบบไม่ใช้คีย์เรียบร้อยแล้ว หากผลลัพธ์ในอนาคตคือ XR_ERROR_KEYLESS_AUTH_FAILED_ANDROID แอปพลิเคชันอาจลองอีกครั้งในภายหลัง
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_google_cloud_authก่อนใช้ XrGoogleCloudAuthInfoKeylessANDROID -
typeต้องเป็นXR_TYPE_GOOGLE_CLOUD_AUTH_INFO_KEYLESS_ANDROID -
nextต้องเป็นNULLหรือพอยน์เตอร์ที่ถูกต้องไปยังโครงสร้างถัดไปในเชนโครงสร้าง
ฟังก์ชัน xrSetGoogleCloudAuthAsyncANDROID มีคำจำกัดความดังนี้
XrResult xrSetGoogleCloudAuthAsyncANDROID(
XrSession session,
const XrGoogleCloudAuthInfoBaseHeaderANDROID* authInfo,
XrFutureEXT* future);
คำอธิบายพารามิเตอร์
sessionคือ XrSession ที่จะใช้ข้อมูลเข้าสู่ระบบauthInfoคือตัวชี้ไปยังโครงสร้างที่ระบุวิธีการตรวจสอบสิทธิ์และพารามิเตอร์ โดยมีช่อง XrGoogleCloudAuthInfoBaseHeaderANDROID ::typeที่ระบุโครงสร้างที่เฉพาะเจาะจงfutureคือตัวชี้ไปยังแฮนเดิลXrFutureEXTซึ่งจะแสดงผล Future ที่สร้างขึ้น หรือ XR_NULL_HANDLE หากฟังก์ชันไม่แสดงผลXR_SUCCESS
ตั้งค่าข้อมูลเข้าสู่ระบบที่ใช้ในการตรวจสอบสิทธิ์กับ Google Cloud การดำเนินการนี้เป็นแบบอะซิงโครนัส เรียกใช้ xrPollFutureEXT เพื่อตรวจสอบสถานะพร้อมในอนาคต เมื่อ Future อยู่ในสถานะพร้อม ให้เรียกใช้ xrSetGoogleCloudAuthCompleteANDROID เพื่อดึงผลลัพธ์
พารามิเตอร์ authInfo ต้องเป็นตัวชี้ไปยังโครงสร้างที่มีสมาชิก XrGoogleCloudAuthInfoBaseHeaderANDROID :: type ระบุวิธีการตรวจสอบสิทธิ์ที่จะใช้ และขยาย XrGoogleCloudAuthInfoBaseHeaderANDROID (เช่น XrGoogleCloudAuthInfoApiKeyANDROID)
ข้อกำหนด ลักษณะการทำงาน และเงื่อนไขข้อผิดพลาดที่เฉพาะเจาะจง (ทั้งแบบซิงโครนัสและอะซิงโครนัส) สำหรับวิธีการตรวจสอบสิทธิ์แต่ละวิธีจะอธิบายไว้ในเอกสารประกอบสำหรับโครงสร้างข้อมูลที่เกี่ยวข้อง
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_google_cloud_authก่อนเรียกใช้ xrSetGoogleCloudAuthAsyncANDROID -
sessionต้องเป็นแฮนเดิล XrSession ที่ถูกต้อง -
authInfoต้องเป็นพอยน์เตอร์ไปยังโครงสร้างที่อิงตาม XrGoogleCloudAuthInfoBaseHeaderANDROID ที่ถูกต้อง ดูเพิ่มเติม: XrGoogleCloudAuthInfoApiKeyANDROID , XrGoogleCloudAuthInfoKeylessANDROID , XrGoogleCloudAuthInfoTokenANDROID -
futureต้องเป็นตัวชี้ไปยังค่าXrFutureEXT
รหัสการคืนสินค้า
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_KEYLESS_AUTH_NOT_SETUP_ANDROIDXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_VALIDATION_FAILURE
ฟังก์ชัน xrSetGoogleCloudAuthCompleteANDROID มีคำจำกัดความดังนี้
XrResult xrSetGoogleCloudAuthCompleteANDROID(
XrSession session,
XrFutureEXT future,
XrFutureCompletionEXT* completion);
คำอธิบายพารามิเตอร์
sessionคือ XrSession ที่ใช้เพื่อเริ่มการดำเนินการfutureเป็นXrFutureEXTที่ต้องทำให้เสร็จcompletionคือตัวชี้ไปยัง XrFutureCompletionEXT ที่รันไทม์กรอกข้อมูลไว้
รหัสการคืนสินค้าในอนาคต
ค่า XrFutureCompletionEXT :: futureResult:
XR_SUCCESS: ใช้ข้อมูลเข้าสู่ระบบเรียบร้อยแล้ว
XR_ERROR_KEYLESS_AUTH_FAILED_ANDROID: การตรวจสอบสิทธิ์แบบไม่ใช้คีย์ไม่สำเร็จ แอปพลิเคชันสามารถลองอีกครั้งในภายหลังได้ แอปพลิเคชันหรือนักพัฒนาแอปอาจตรวจสอบเงื่อนไขเบื้องต้นบางอย่างเพื่อให้การดำเนินการสำเร็จด้วย (เช่น ใน Android อุปกรณ์ต้องมีการติดตั้งบริการ Google Play เวอร์ชันล่าสุด และบริการเหล่านี้ต้องทำงานอย่างถูกต้อง)
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_google_cloud_authก่อนเรียกใช้ xrSetGoogleCloudAuthCompleteANDROID -
sessionต้องเป็นแฮนเดิล XrSession ที่ถูกต้อง -
completionต้องเป็นตัวชี้ไปยังโครงสร้าง XrFutureCompletionEXT
รหัสการคืนสินค้า
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_FUTURE_INVALID_EXTXR_ERROR_FUTURE_PENDING_EXTXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_VALIDATION_FAILURE
ข้อผิดพลาดในการตรวจสอบสิทธิ์ Google Cloud
การแจงนับ XrGoogleCloudAuthErrorANDROID มีคำจำกัดความดังนี้
typedef enum XrGoogleCloudAuthErrorANDROID {
XR_GOOGLE_CLOUD_AUTH_ERROR_NONE_ANDROID = 0,
XR_GOOGLE_CLOUD_AUTH_ERROR_QUOTA_EXCEEDED_ANDROID = -1,
XR_GOOGLE_CLOUD_AUTH_ERROR_UNREACHABLE_ANDROID = -2,
XR_GOOGLE_CLOUD_AUTH_ERROR_ANDROID = -3,
XR_GOOGLE_CLOUD_AUTH_ERROR_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrGoogleCloudAuthErrorANDROID;
ค่าแจงนับมีค่าต่อไปนี้
คำอธิบาย Enum
XR_GOOGLE_CLOUD_AUTH_ERROR_NONE_ANDROID
ไม่พบข้อผิดพลาดเมื่อเรียกใช้ Google Cloud API
XR_GOOGLE_CLOUD_AUTH_ERROR_QUOTA_EXCEEDED_ANDROID
เกินโควต้าเมื่อเรียกใช้ Google Cloud API
XR_GOOGLE_CLOUD_AUTH_ERROR_UNREACHABLE_ANDROID
เข้าถึง Google Cloud API ไม่สำเร็จ อาจเป็นเพราะปัญหาการเชื่อมต่อเครือข่ายหรือความพร้อมใช้งานของเซิร์ฟเวอร์
XR_GOOGLE_CLOUD_AUTH_ERROR_ANDROID
เกิดข้อผิดพลาดในการตรวจสอบสิทธิ์เมื่อเรียกใช้ Google Cloud API
โครงสร้าง XrGoogleCloudAuthErrorResultANDROID มีคำจำกัดความดังนี้
typedef struct XrGoogleCloudAuthErrorResultANDROID {
XrStructureType type;
void* next;
XrGoogleCloudAuthErrorANDROID error;
} XrGoogleCloudAuthErrorResultANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือตัวชี้ไปยังโครงสร้างถัดไปในเชนโครงสร้างerrorคือ XrGoogleCloudAuthErrorANDROID ที่ให้รายละเอียดสาเหตุของข้อผิดพลาดในการดำเนินการที่เข้าถึง Google Cloud
หากการดำเนินการล้มเหลวเนื่องจากการตรวจสอบสิทธิ์ Google Cloud โครงสร้างนี้อาจเชื่อมโยงกับโครงสร้างผลลัพธ์การดำเนินการเพื่อให้ข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาด
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_google_cloud_authก่อนใช้ XrGoogleCloudAuthErrorResultANDROID -
typeต้องเป็นXR_TYPE_GOOGLE_CLOUD_AUTH_ERROR_RESULT_ANDROID -
nextต้องเป็นNULLหรือพอยน์เตอร์ที่ถูกต้องไปยังโครงสร้างถัดไปในเชนโครงสร้าง -
errorต้องเป็นค่า XrGoogleCloudAuthErrorANDROID ที่ถูกต้อง
โค้ดตัวอย่าง
XrSession session; // previously initialized
XrInstance instance; // previously initialized
XrFutureEXT future = XR_NULL_HANDLE;
// The function pointers are previously initialized using
// xrGetInstanceProcAddr.
PFN_xrPollFutureEXT xrPollFutureEXT; // previously initialized
PFN_xrSetGoogleCloudAuthAsyncANDROID xrSetGoogleCloudAuthAsyncANDROID; // previously initialized
PFN_xrSetGoogleCloudAuthCompleteANDROID xrSetGoogleCloudAuthCompleteANDROID; // previously initialized
auto waitUntilReady = [&](XrFutureEXT future) {
XrFuturePollInfoEXT pollInfo{XR_TYPE_FUTURE_POLL_INFO_EXT};
XrFuturePollResultEXT pollResult{XR_TYPE_FUTURE_POLL_RESULT_EXT};
pollInfo.future = future;
do {
// sleep(1);
xrPollFutureEXT(instance, &pollInfo, &pollResult);
} while (pollResult.state != XR_FUTURE_STATE_READY_EXT);
};
// Set Google Cloud auth via API key.
XrGoogleCloudAuthInfoApiKeyANDROID authApiKey{XR_TYPE_GOOGLE_CLOUD_AUTH_INFO_API_KEY_ANDROID};
authApiKey.apiKey = "MYAPIKEY";
XrResult result = xrSetGoogleCloudAuthAsyncANDROID(
session, reinterpret_cast<XrGoogleCloudAuthInfoBaseHeaderANDROID*>(&authApiKey), &future);
// Or, set Google Cloud auth via auth token:
XrGoogleCloudAuthInfoTokenANDROID authToken{XR_TYPE_GOOGLE_CLOUD_AUTH_INFO_TOKEN_ANDROID};
authToken.authToken = "MYAUTHTOKEN";
result = xrSetGoogleCloudAuthAsyncANDROID(
session, reinterpret_cast<XrGoogleCloudAuthInfoBaseHeaderANDROID*>(&authToken), &future);
// Or, set Google Cloud auth via keyless auth:
XrGoogleCloudAuthInfoKeylessANDROID authKeyless{XR_TYPE_GOOGLE_CLOUD_AUTH_INFO_KEYLESS_ANDROID};
result = xrSetGoogleCloudAuthAsyncANDROID(
session, reinterpret_cast<XrGoogleCloudAuthInfoBaseHeaderANDROID*>(&authKeyless),
&future);
// Check the result of the auth setup.
if (result == XR_ERROR_VALIDATION_FAILURE) {
// The credentials were invalid.
} else if (result == XR_ERROR_KEYLESS_AUTH_NOT_SETUP_ANDROID) {
// Keyless auth was not properly setup.
} else if (result == XR_SUCCESS) {
waitUntilReady(future);
XrFutureCompletionEXT completion{XR_TYPE_FUTURE_COMPLETION_EXT};
xrSetGoogleCloudAuthCompleteANDROID(session, future, &completion);
if (completion.futureResult == XR_SUCCESS) {
// Credentials were successfully applied.
} else if (completion.futureResult == XR_ERROR_KEYLESS_AUTH_FAILED_ANDROID) {
// An error occurred when setting keyless auth credentials. This error may be retried.
}
}
คำสั่งใหม่
โครงสร้างใหม่
- XrGoogleCloudAuthInfoApiKeyANDROID
- XrGoogleCloudAuthInfoBaseHeaderANDROID
- XrGoogleCloudAuthInfoKeylessANDROID
- XrGoogleCloudAuthInfoTokenANDROID
การขยาย XrGoogleCloudAuthInfoBaseHeaderANDROID :
Enum ใหม่
ค่าคงที่ Enum ใหม่
XR_ANDROID_GOOGLE_CLOUD_AUTH_EXTENSION_NAMEXR_ANDROID_google_cloud_auth_SPEC_VERSIONการขยาย XrResult :
XR_ERROR_KEYLESS_AUTH_FAILED_ANDROIDXR_ERROR_KEYLESS_AUTH_NOT_SETUP_ANDROID
การขยาย XrStructureType :
XR_TYPE_GOOGLE_CLOUD_AUTH_ERROR_RESULT_ANDROIDXR_TYPE_GOOGLE_CLOUD_AUTH_INFO_API_KEY_ANDROIDXR_TYPE_GOOGLE_CLOUD_AUTH_INFO_KEYLESS_ANDROIDXR_TYPE_GOOGLE_CLOUD_AUTH_INFO_TOKEN_ANDROID
ปัญหา
Revision 1, 2025-12-18 (Ben King)
- คำอธิบายส่วนขยายเริ่มต้น