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 सेटअप से जुड़ी समस्याओं को डीबग कर सकता है. अगर ऐप्लिकेशन में डीबग मैसेंजर है और ऐप्लिकेशन की ओर से Google Cloud को अनुरोध भेजते समय रनटाइम में कोई ऐसी गड़बड़ी होती है जिस पर कार्रवाई की जा सकती है, तो रनटाइम, गड़बड़ी के मैसेज के साथ मैसेंजर के कॉलबैक को शुरू करता है. इस मामले में, डेवलपर को गड़बड़ी का मैसेज और उपलब्ध सभी दस्तावेज़ देखने चाहिए. इसके बाद, यह पक्का करना चाहिए कि ऐप्लिकेशन और Google Cloud प्रोजेक्ट को Google Cloud API इस्तेमाल करने के लिए सही तरीके से सेट अप किया गया हो. रनटाइम में, मैसेज टाइप 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 -
nextकोNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए. यह भी देखें: 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 क्लाउड प्रोजेक्ट के लिए जनरेट किया गया मान्य एपीआई पासकोड होना चाहिए.
- आपके 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होनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
apiKeyको शून्य पर खत्म होने वाली UTF-8 स्ट्रिंग होना चाहिए
XrGoogleCloudAuthInfoTokenANDROID स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrGoogleCloudAuthInfoTokenANDROID {
XrStructureType type;
const void* next;
const char* authToken;
} XrGoogleCloudAuthInfoTokenANDROID;
सदस्यों की जानकारी
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है.authToken, ऑथराइज़ेशन टोकन को दिखाने वाली स्ट्रिंग का पॉइंटर है.
जब इस स्ट्रक्चर को xrSetGoogleCloudAuthAsyncANDROID को पास किया जाता है, तो authToken मेंबर ज़रूरी है कि वह खाली न हो और उसमें कोई स्पेस या कंट्रोल वर्ण न हो. ऐसा न होने पर, रनटाइम को XR_ERROR_VALIDATION_FAILURE दिखाना ज़रूरी है. authToken को इन शर्तों को भी पूरा करना होगा:
- यह आपके Google Cloud प्रोजेक्ट के लिए जनरेट किया गया, मान्य और चालू क्रेडेंशियल होना चाहिए.
- आपके Google Cloud प्रोजेक्ट में, Google Cloud के ज़रूरी एपीआई चालू होने चाहिए. ये एपीआई, डिपेंडिंग एक्सटेंशन के हिसाब से तय किए जाते हैं.
क्रेडेंशियल इनमें से कोई एक होना चाहिए:
- सही स्कोप वाला OAuth2 ऐक्सेस टोकन, जो आपके ऐप्लिकेशन के साथ Google खाते में साइन इन करके जनरेट किया गया हो या
- आपके Google Cloud प्रोजेक्ट के सेवा खाते से जनरेट किया गया, ज़रूरी दावों वाला साइन किया हुआ 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होनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
authTokenको शून्य पर खत्म होने वाली UTF-8 स्ट्रिंग होना चाहिए
XrGoogleCloudAuthInfoKeylessANDROID स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrGoogleCloudAuthInfoKeylessANDROID {
XrStructureType type;
const void* next;
} XrGoogleCloudAuthInfoKeylessANDROID;
सदस्यों की जानकारी
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है.
जब इस स्ट्रक्चर को xrSetGoogleCloudAuthAsyncANDROID को पास किया जाता है, तो रनटाइम डाइनैमिक तौर पर क्रेडेंशियल जनरेट कर सकता है. उदाहरण के लिए, Android पर रनटाइम, ऐप्लिकेशन प्रोसेस से Google Play Services के साथ कम्यूनिकेट करता है. अगर बिना पासकोड के पुष्टि करने की सुविधा को सही तरीके से सेट अप नहीं किया गया है, तो रनटाइम 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होनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
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 हैंडल होना चाहिए -
completionmust be a pointer to an XrFutureCompletionEXT structure
रिटर्न कोड
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 से पुष्टि न होने की वजह से कोई कार्रवाई पूरी नहीं हो पाती है, तो इस स्ट्रक्चर को कार्रवाई के नतीजे वाले स्ट्रक्चर से जोड़ा जा सकता है. इससे गड़बड़ी के बारे में ज़्यादा जानकारी मिलती है.
सही इस्तेमाल (इंप्लिसिट)
- XrGoogleCloudAuthErrorResultANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_google_cloud_authएक्सटेंशन चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_GOOGLE_CLOUD_AUTH_ERROR_RESULT_ANDROIDहोनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
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
नए Enum
नए 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
समस्याएं
संशोधन 1, 18-12-2025 (बेन किंग)
- एक्सटेंशन का शुरुआती ब्यौरा.