XR_ANDROID_google_cloud_auth
Name String
XR_ANDROID_google_cloud_auth
एक्सटेंशन टाइप
इंस्टेंस एक्सटेंशन
रजिस्टर किया गया एक्सटेंशन नंबर
788
बदलाव
1
पुष्टि की स्थिति
पुष्टि नहीं की गई
एक्सटेंशन और वर्शन की डिपेंडेंसी
XR_EXT_future
पिछली बार बदलाव किए जाने की तारीख
2025-12-18
आईपी स्टेटस
आईपी से जुड़े किसी भी दावे की जानकारी नहीं है.
योगदान देने वाले
जॉन उल्मैन, Google
बेन किंग, Google
निहाव जैन, Google
जेरेड फ़ाइंडर, Google
खास जानकारी
यह एक्सटेंशन, Google Cloud पर आधारित एक्सटेंशन के इस्तेमाल को चालू करता है. इसके लिए, यह ऐप्लिकेशन को Google Cloud API के लिए पुष्टि करने वाले क्रेडेंशियल देने की अनुमति देता है. डेवलपर को ऐप्लिकेशन के लिए Google Cloud प्रोजेक्ट बनाने के लिए, Google Cloud Console ( https://console.cloud.google.com/ ) का इस्तेमाल करना होगा. इस एक्सटेंशन के लिए, XR_EXT_future एक्सटेंशन की ज़रूरत होती है .
डेवलपमेंट के दौरान, ऐप्लिकेशन कर सकता है एक्सटेंशन XR_EXT_debug_utils का इस्तेमाल करके, Google Cloud सेटअप से जुड़ी समस्याओं को डीबग करना . अगर ऐप्लिकेशन में Debug Messenger है और ऐप्लिकेशन की ओर से Google Cloud को अनुरोध भेजते समय, रनटाइम में कोई ऐसी गड़बड़ी होती है जिसे ठीक किया जा सकता है, तो रनटाइम, गड़बड़ी के मैसेज के साथ मैसेंजर के कॉलबैक को शुरू करता है. इस मामले में, डेवलपर को गड़बड़ी के मैसेज और उपलब्ध सभी दस्तावेज़ों को देखना चाहिए. इसके बाद, उसे यह पक्का करना चाहिए कि Google Cloud API का इस्तेमाल करने के लिए, ऐप्लिकेशन और 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होता है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर होता है.
इस स्ट्रक्चर का इस्तेमाल सीधे तौर पर एपीआई में नहीं किया जाता. हालांकि, इसे अन्य स्ट्रक्चर के साथ बढ़ाया जाता है. इन स्ट्रक्चर का इस्तेमाल, पुष्टि करने के क्रेडेंशियल देने के लिए xrSetGoogleCloudAuthAsyncANDROID के साथ किया जा सकता है.
मान्य इस्तेमाल (इंप्लिसिट)
- XrGoogleCloudAuthInfoBaseHeaderANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_google_cloud_authएक्सटेंशन को चालू करना ज़रूरी है -
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 -
nextmust beNULLor a valid pointer to the next structure in a structure chain . यह भी देखें: XrGoogleCloudAuthErrorResultANDROID
XrGoogleCloudAuthInfoApiKeyANDROID स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrGoogleCloudAuthInfoApiKeyANDROID {
XrStructureType type;
const void* next;
const char* apiKey;
} XrGoogleCloudAuthInfoApiKeyANDROID;
सदस्यों के बारे में जानकारी
typeइस स्ट्रक्चर का XrStructureType है.next,NULLहोता है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर होता है.apiKey, एपीआई पासकोड को दिखाने वाली स्ट्रिंग का पॉइंटर है.
इस स्ट्रक्चर को xrSetGoogleCloudAuthAsyncANDROID पर पास करने पर , apiKey सदस्य ज़रूर एक ऐसी ASCII स्ट्रिंग होनी चाहिए जिसमें कोई स्पेस या कंट्रोल वर्ण न हो. ऐसा न होने पर, रनटाइम को XR_ERROR_VALIDATION_FAILURE ज़रूर दिखाना चाहिए.
apiKey को इन शर्तों को भी पूरा करना होगा:
- यह आपके Google Cloud प्रोजेक्ट के लिए जनरेट किया गया मान्य एपीआई पासकोड होना चाहिए.
- आपके Google Cloud प्रोजेक्ट में, Google Cloud के ज़रूरी एपीआई चालू होने चाहिए. ये एपीआई, एक्सटेंशन के हिसाब से तय किए जाते हैं.
- अगर एपीआई पासकोड पर पाबंदियां लागू हैं, तो ज़रूरी है कि वे पाबंदियां, Google Cloud के ज़रूरी एपीआई और आपके ऐप्लिकेशन के लिए लागू हों.
ऐसा न करने पर, xrSetGoogleCloudAuthAsyncANDROID को कॉल करने पर कोई गड़बड़ी नहीं होगी. हालांकि, क्लाउड ऑथराइज़ेशन पर निर्भर करने वाले सभी फ़ंक्शन को कॉल करने पर, एक्सटेंशन में क्लाउड से जुड़ी गड़बड़ियों के लिए बताए गए तरीके से काम किया जाएगा. अगर कोई फ़ंक्शन गड़बड़ी की जानकारी दे सकता है और ऐप्लिकेशन, उस फ़ंक्शन के आउटपुट पैरामीटर में XrGoogleCloudAuthErrorResultANDROID को चेन करता है, तो रनटाइम को इस गड़बड़ी के बारे में बताने के लिए, XrGoogleCloudAuthErrorResultANDROID :: error को XR_GOOGLE_CLOUD_AUTH_ERROR_ANDROID पर सेट करना होगा.
एपीआई कुंजी की पुष्टि होने के बाद, एसिंक्रोनस ऑपरेशन XR_SUCCESS के साथ पूरा हो जाएगा. इसकी पुष्टि फ़ॉर्मैटिंग के लिए की जाती है और इसे रनटाइम के हिसाब से सेव किया जाता है.
मान्य इस्तेमाल (इंप्लिसिट)
- XrGoogleCloudAuthInfoApiKeyANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_google_cloud_authएक्सटेंशन को चालू करना ज़रूरी है -
typeज़रूरी तौर परXR_TYPE_GOOGLE_CLOUD_AUTH_INFO_API_KEY_ANDROIDहोना चाहिए -
next,NULLया स्ट्रक्चर चेन में मौजूद अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
apiKey, नल से खत्म होने वाली UTF-8 स्ट्रिंग होनी चाहिए
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 के ज़रूरी एपीआई चालू होने चाहिए. ये एपीआई, एक्सटेंशन के हिसाब से तय किए जाते हैं.
क्रेडेंशियल इनमें से कोई एक होना चाहिए:
- OAuth2 ऐक्सेस टोकन, जिसमें ज़रूरी स्कोप शामिल हों. इसे आपके ऐप्लिकेशन से Google खाते में साइन इन करके जनरेट किया गया हो या
- आपके Google Cloud प्रोजेक्ट के सेवा खाते से जनरेट किया गया, ज़रूरी दावों वाला Signed JWT टोकन.
हर मामले में ज़रूरी शर्तें, एक्सटेंशन के हिसाब से तय की जाती हैं. ऐसा न करने पर, xrSetGoogleCloudAuthAsyncANDROID को कॉल करने पर कोई गड़बड़ी नहीं होगी. हालांकि, क्लाउड ऑथराइज़ेशन पर निर्भर करने वाले सभी फ़ंक्शन को कॉल करने पर, एक्सटेंशन में क्लाउड से जुड़ी गड़बड़ियों के लिए बताए गए तरीके से काम किया जाएगा. अगर कोई फ़ंक्शन गड़बड़ी की जानकारी दे सकता है और ऐप्लिकेशन, उस फ़ंक्शन के आउटपुट पैरामीटर में XrGoogleCloudAuthErrorResultANDROID को चेन करता है, तो रनटाइम को इस गड़बड़ी के बारे में बताने के लिए, XrGoogleCloudAuthErrorResultANDROID :: error को XR_GOOGLE_CLOUD_AUTH_ERROR_ANDROID पर सेट करना होगा.
पुराने टोकन की समयसीमा खत्म होने से पहले, ऐप्लिकेशन को xrSetGoogleCloudAuthAsyncANDROID के ज़रिए नया टोकन भेजना होगा. नया नेटवर्क अनुरोध शुरू करते समय, रनटाइम को ऐप्लिकेशन से मिले नए टोकन का इस्तेमाल ज़रूर करना चाहिए.
टोकन की पुष्टि होने के बाद, एसिंक्रोनस ऑपरेशन XR_SUCCESS के साथ पूरा हो जाएगा. इसके बाद, टोकन को फ़ॉर्मैट किया जाएगा और रनटाइम के हिसाब से सेव किया जाएगा.
मान्य इस्तेमाल (इंप्लिसिट)
- XrGoogleCloudAuthInfoTokenANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_google_cloud_authएक्सटेंशन को चालू करना ज़रूरी है -
typeज़रूरी तौर परXR_TYPE_GOOGLE_CLOUD_AUTH_INFO_TOKEN_ANDROIDहोना चाहिए -
next,NULLया स्ट्रक्चर चेन में मौजूद अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
authToken, नल से खत्म होने वाली UTF-8 स्ट्रिंग होनी चाहिए
XrGoogleCloudAuthInfoKeylessANDROID स्ट्रक्चर को इस तरह से परिभाषित किया गया है:
typedef struct XrGoogleCloudAuthInfoKeylessANDROID {
XrStructureType type;
const void* next;
} XrGoogleCloudAuthInfoKeylessANDROID;
सदस्यों के बारे में जानकारी
typeइस स्ट्रक्चर का XrStructureType है.next,NULLहोता है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर होता है.
इस स्ट्रक्चर को xrSetGoogleCloudAuthAsyncANDROID को पास करने पर, रनटाइम क्रेडेंशियल को डाइनैमिक तरीके से जनरेट कर सकता है. उदाहरण के लिए, Android पर रनटाइम, ऐप्लिकेशन प्रोसेस से Google Play services के साथ कम्यूनिकेट करता है. अगर बिना कुंजी के पुष्टि करने की सुविधा को सही तरीके से सेट अप नहीं किया गया है, तो रनटाइम may XR_ERROR_KEYLESS_AUTH_NOT_SETUP_ANDROID को सिंक्रोनस तरीके से वापस भेज सकता है.
एसिंक्रोनस ऑपरेशन, क्रेडेंशियल पाने के लिए ज़रूरी नेटवर्क अनुरोध करेगा. इस कार्रवाई का नतीजा, xrSetGoogleCloudAuthCompleteANDROID से XrFutureCompletionEXT :: futureResult में दिखेगा . अगर आने वाले समय में मिलने वाला नतीजा XR_SUCCESS है , तो इसका मतलब है कि बिना कुंजी वाले क्रेडेंशियल सही तरीके से लागू हो गए हैं. अगर आने वाले समय में नतीजे XR_ERROR_KEYLESS_AUTH_FAILED_ANDROID हैं , तो ऐप्लिकेशन बाद में फिर से कोशिश कर सकता है.
मान्य इस्तेमाल (इंप्लिसिट)
- XrGoogleCloudAuthInfoKeylessANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_google_cloud_authएक्सटेंशन को चालू करना ज़रूरी है -
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हैंडल का पॉइंटर है, जिसमें बनाया गया फ़्यूचर दिखता है. अगर फ़ंक्शन नेXR_SUCCESSनहीं दिखाया है, तो XR_NULL_HANDLE दिखता है.
Google Cloud से पुष्टि करने के लिए इस्तेमाल किए गए क्रेडेंशियल सेट करें. यह ऑपरेशन एसिंक्रोनस है. फ़्यूचर पर रेडी स्टेट की जांच करने के लिए, xrPollFutureEXT को कॉल करें. जब फ़्यूचर, रेडी स्टेट में हो, तब नतीजे पाने के लिए xrSetGoogleCloudAuthCompleteANDROID को कॉल करें.
authInfo पैरामीटर, एक ऐसे स्ट्रक्चर का पॉइंटर होना चाहिए जिसका XrGoogleCloudAuthInfoBaseHeaderANDROID :: type सदस्य, इस्तेमाल की जाने वाली पुष्टि करने की प्रोसेस की पहचान करता है.साथ ही, यह XrGoogleCloudAuthInfoBaseHeaderANDROID को बढ़ाता है. उदाहरण के लिए, XrGoogleCloudAuthInfoApiKeyANDROID .
पुष्टि करने के हर तरीके के लिए, खास ज़रूरी शर्तें, व्यवहार, और गड़बड़ी की स्थितियां (सिंक्रोनस और असिंक्रोनस, दोनों) बताई गई हैं. ये स्थितियां, उनके डेटा स्ट्रक्चर के दस्तावेज़ में बताई गई हैं.
मान्य इस्तेमाल (इंप्लिसिट)
- xrSetGoogleCloudAuthAsyncANDROID को कॉल करने से पहले,
XR_ANDROID_google_cloud_authएक्सटेंशन को चालू करना ज़रूरी है -
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 services का अप-टू-डेट वर्शन इंस्टॉल होना चाहिए और ये सेवाएं सही तरीके से काम करनी चाहिए.
मान्य इस्तेमाल (इंप्लिसिट)
- xrSetGoogleCloudAuthCompleteANDROID को कॉल करने से पहले,
XR_ANDROID_google_cloud_authएक्सटेंशन को चालू करना ज़रूरी है -
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 Authentication की वजह से कोई ऑपरेशन पूरा नहीं हो पाता है, तो इस struct को ऑपरेशन के नतीजे वाले struct से लिंक किया जा सकता है. इससे गड़बड़ी के बारे में ज़्यादा जानकारी मिलती है.
मान्य इस्तेमाल (इंप्लिसिट)
- XrGoogleCloudAuthErrorResultANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_google_cloud_authएक्सटेंशन को चालू करना ज़रूरी है -
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 कॉन्स्टेंट
XR_ANDROID_GOOGLE_CLOUD_AUTH_EXTENSION_NAMEXR_ANDROID_google_cloud_auth_SPEC_VERSIONXrResult को बढ़ाना :
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
समस्याएं
पहला संशोधन, 18-12-2025 (बेन किंग)
- एक्सटेंशन के बारे में शुरुआती जानकारी.