XR_ANDROID_google_cloud_auth

নাম স্ট্রিং

XR_ANDROID_google_cloud_auth

এক্সটেনশন টাইপ

ইনস্ট্যান্স এক্সটেনশন

নিবন্ধিত এক্সটেনশন নম্বর

৭৮৮

সংশোধন

অনুমোদনের অবস্থা

অনুমোদিত নয়

এক্সটেনশন এবং সংস্করণ নির্ভরতা

XR_EXT_future

সর্বশেষ সংশোধনের তারিখ

২০২৫-১২-১৮

আইপি স্ট্যাটাস

কোনো জ্ঞাত আইপি দাবি নেই।

অবদানকারীরা

জন উলম্যান, গুগল
বেন কিং, গুগল
নিহাব জৈন, গুগল
জ্যারেড ফাইন্ডার, গুগল

সংক্ষিপ্ত বিবরণ

এই এক্সটেনশনটি অ্যাপ্লিকেশনটিকে গুগল ক্লাউড এপিআই (Google Cloud APIs)-এর জন্য অথেন্টিকেশন ক্রেডেনশিয়াল (auth credentials) প্রদান করার সুযোগ দিয়ে গুগল ক্লাউড-ভিত্তিক এক্সটেনশনগুলির ব্যবহার সক্ষম করে। অ্যাপ্লিকেশনটির জন্য একটি গুগল ক্লাউড প্রজেক্ট তৈরি করতে ডেভেলপারকে অবশ্যই গুগল ক্লাউড কনসোল ( https://console.cloud.google.com/ ) ব্যবহার করতে হবে। এই এক্সটেনশনটির জন্য XR_EXT_future এক্সটেনশনটি প্রয়োজন।

ডেভেলপমেন্টের সময়, অ্যাপ্লিকেশনটি XR_EXT_debug_utils এক্সটেনশনটি ব্যবহার করে তাদের গুগল ক্লাউড সেটআপের সমস্যা ডিবাগ করতে পারে । যদি অ্যাপ্লিকেশনটিতে একটি ডিবাগ মেসেঞ্জার থাকে, এবং অ্যাপ্লিকেশনটির পক্ষ থেকে গুগল ক্লাউডে অনুরোধ পাঠানোর সময় রানটাইমে কোনো সম্ভাব্য সমাধানযোগ্য ত্রুটি ঘটে, তবে রানটাইম একটি ত্রুটি বার্তা সহ মেসেঞ্জারের কলব্যাকটি চালু করে। এই ক্ষেত্রে, ডেভেলপারের উচিত ত্রুটি বার্তা এবং সমস্ত উপলব্ধ ডকুমেন্টেশন দেখে নেওয়া, এবং তারপর নিশ্চিত করা যে অ্যাপ্লিকেশন এবং গুগল ক্লাউড প্রজেক্টটি গুগল ক্লাউড এপিআই ব্যবহার করার জন্য সঠিকভাবে সেটআপ করা আছে। রানটাইমকে অবশ্যই মেসেজ টাইপ XR_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT , সেভিয়ারিটি XR_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT , এবং মেসেজআইডি “GoogleCloudError” ব্যবহার করতে হবে।

প্রমাণীকরণ

XrGoogleCloudAuthInfoBaseHeaderANDROID কাঠামোটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:

typedef struct XrGoogleCloudAuthInfoBaseHeaderANDROID {
    XrStructureType    type;
    const void*        next;
} XrGoogleCloudAuthInfoBaseHeaderANDROID;

সদস্যদের বিবরণ

  • type হলো এই স্ট্রাকচারটির XrStructureType
  • next হলো NULL অথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের দিকে নির্দেশকারী একটি পয়েন্টার।

এই কাঠামোটি সরাসরি এপিআই-তে ব্যবহৃত হয় না, তবে এটিকে অন্যান্য কাঠামো দ্বারা সম্প্রসারিত করা হয় যা প্রমাণীকরণের তথ্য প্রদানের জন্য xrSetGoogleCloudAuthAsyncANDROID-এর সাথে ব্যবহার করা যেতে পারে

বৈধ ব্যবহার (অন্তর্নিহিত)

XrGoogleCloudAuthInfoApiKeyANDROID কাঠামোটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:

typedef struct XrGoogleCloudAuthInfoApiKeyANDROID {
    XrStructureType    type;
    const void*        next;
    const char*        apiKey;
} XrGoogleCloudAuthInfoApiKeyANDROID;

সদস্যদের বিবরণ

  • type হলো এই স্ট্রাকচারটির XrStructureType
  • next হলো NULL অথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের দিকে নির্দেশকারী একটি পয়েন্টার।
  • apiKey হলো এপিআই কী (API key) প্রতিনিধিত্বকারী একটি স্ট্রিং-এর পয়েন্টার।

যখন এই স্ট্রাকচারটি xrSetGoogleCloudAuthAsyncANDROID- এ পাস করা হয়, তখন apiKey মেম্বারটি অবশ্যই একটি নন-এম্পটি ASCII স্ট্রিং হতে হবে, যাতে কোনো স্পেস বা কন্ট্রোল ক্যারেক্টার থাকবে না; অন্যথায় রানটাইম XR_ERROR_VALIDATION_FAILURE রিটার্ন করবে

apiKey আরও নিম্নলিখিত শর্তগুলো পূরণ করতে হবে :

  • এটি অবশ্যই আপনার গুগল ক্লাউড প্রজেক্টের জন্য তৈরি করা একটি বৈধ এপিআই কী হতে হবে।
  • আপনার গুগল ক্লাউড প্রজেক্টে অবশ্যই প্রাসঙ্গিক গুগল ক্লাউড এপিআইগুলো (নির্ভরশীল এক্সটেনশন দ্বারা নির্দিষ্ট) সক্রিয় করতে হবে।
  • যদি এপিআই কী-তে কোনো সীমাবদ্ধতা থাকে, তবে সেই সীমাবদ্ধতা অবশ্যই প্রাসঙ্গিক গুগল ক্লাউড এপিআই এবং আপনার অ্যাপ্লিকেশনকে অনুমতি দেবে।

অন্যথায়, xrSetGoogleCloudAuthAsyncANDROID- এর কলটি সফল হবে, কিন্তু ক্লাউড অথরাইজেশনের উপর নির্ভরশীল ফাংশনগুলিতে করা সমস্ত কল, সেই ফাংশনগুলিকে সংজ্ঞায়িতকারী এক্সটেনশনে ক্লাউড ব্যর্থতার জন্য নথিভুক্ত নিয়ম অনুযায়ী কাজ করবে। যদি কোনো ফাংশন ব্যর্থতা রিপোর্ট করতে পারে এবং অ্যাপ্লিকেশনটি সেই ফাংশনের আউটপুট প্যারামিটারে XrGoogleCloudAuthErrorResultANDROID চেইন করে, তবে এই ত্রুটিটি নির্দেশ করার জন্য রানটাইমকে অবশ্যই XrGoogleCloudAuthErrorResultANDROID :: error XR_GOOGLE_CLOUD_AUTH_ERROR_ANDROID এ সেট করতে হবে।

রানটাইম দ্বারা এপিআই কী-এর ফরম্যাটিং যাচাই ও সংরক্ষণ সম্পন্ন হলে, অ্যাসিঙ্ক্রোনাস অপারেশনটি XR_SUCCESS কোড দিয়ে সম্পূর্ণ হবে।

বৈধ ব্যবহার (অন্তর্নিহিত)

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 নিম্নলিখিত শর্তগুলো পূরণ করতে হবে :

  • এটি অবশ্যই আপনার গুগল ক্লাউড প্রকল্পের জন্য তৈরি করা একটি বৈধ এবং মেয়াদোত্তীর্ণ নয় এমন ক্রেডেনশিয়াল হতে হবে।
  • আপনার গুগল ক্লাউড প্রজেক্টে অবশ্যই প্রাসঙ্গিক গুগল ক্লাউড এপিআইগুলো (নির্ভরশীল এক্সটেনশন দ্বারা নির্দিষ্ট) সক্রিয় করতে হবে।
  • শংসাপত্রটি নিম্নলিখিতগুলির মধ্যে একটি হতে হবে :

    • আপনার অ্যাপ্লিকেশন দিয়ে একটি গুগল অ্যাকাউন্টে সাইন ইন করে তৈরি করা, প্রাসঙ্গিক স্কোপসহ একটি OAuth2 অ্যাক্সেস টোকেন, অথবা
    • আপনার গুগল ক্লাউড প্রজেক্টের একটি সার্ভিস অ্যাকাউন্ট দ্বারা জেনারেট করা, প্রাসঙ্গিক ক্লেইমসহ একটি স্বাক্ষরিত JWT টোকেন।

প্রতিটি ক্ষেত্রে প্রয়োজনীয়তাগুলো সংশ্লিষ্ট এক্সটেনশন দ্বারা নির্দিষ্ট করা হয়। অন্যথায়, xrSetGoogleCloudAuthAsyncANDROID- এর কলটি সফল হবে, কিন্তু ক্লাউড অথরাইজেশনের উপর নির্ভরশীল ফাংশনগুলোর সমস্ত কল, সেই ফাংশনগুলোকে সংজ্ঞায়িতকারী এক্সটেনশনে ক্লাউড ব্যর্থতার জন্য নথিভুক্ত নিয়ম অনুযায়ী কাজ করবে। যদি কোনো ফাংশন ব্যর্থতা রিপোর্ট করতে পারে এবং অ্যাপ্লিকেশনটি সেই ফাংশনের আউটপুট প্যারামিটারে XrGoogleCloudAuthErrorResultANDROID চেইন করে, তবে এই ত্রুটিটি নির্দেশ করার জন্য রানটাইমকে অবশ্যই XrGoogleCloudAuthErrorResultANDROID :: error XR_GOOGLE_CLOUD_AUTH_ERROR_ANDROID এ সেট করতে হবে।

পুরানো টোকেনের মেয়াদ শেষ হওয়ার আগেই অ্যাপ্লিকেশনটিকে অবশ্যই xrSetGoogleCloudAuthAsyncANDROID- এর মাধ্যমে সক্রিয়ভাবে একটি নতুন টোকেন পাঠাতে হবে। নতুন নেটওয়ার্ক অনুরোধ শুরু করার সময় রানটাইমকে অবশ্যই অ্যাপ্লিকেশন দ্বারা পাঠানো সর্বশেষ টোকেনটি ব্যবহার করতে হবে।

রানটাইম দ্বারা টোকেনটির ফরম্যাটিং যাচাই এবং সংরক্ষণ সম্পন্ন হলে, অ্যাসিঙ্ক্রোনাস অপারেশনটি XR_SUCCESS কোড দিয়ে সমাপ্ত হবে।

বৈধ ব্যবহার (অন্তর্নিহিত)

XrGoogleCloudAuthInfoKeylessANDROID কাঠামোটি নিম্নরূপে সংজ্ঞায়িত করা হয়:

typedef struct XrGoogleCloudAuthInfoKeylessANDROID {
    XrStructureType    type;
    const void*        next;
} XrGoogleCloudAuthInfoKeylessANDROID;

সদস্যদের বিবরণ

  • type হলো এই স্ট্রাকচারটির XrStructureType
  • next হলো NULL অথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের দিকে নির্দেশকারী একটি পয়েন্টার।

যখন এই স্ট্রাকচারটি xrSetGoogleCloudAuthAsyncANDROID- এ পাস করা হয়, তখন রানটাইম ডায়নামিকভাবে ক্রেডেনশিয়াল তৈরি করতে পারে (যেমন অ্যান্ড্রয়েডে, রানটাইম অ্যাপ্লিকেশন প্রসেস থেকে গুগল প্লে সার্ভিসের সাথে যোগাযোগ করে)। যদি কীলেস অথেন্টিকেশন সঠিকভাবে সেটআপ করা না থাকে, তাহলে রানটাইম সিনক্রোনাসলি XR_ERROR_KEYLESS_AUTH_NOT_SETUP_ANDROID রিটার্ন করতে পারে

অ্যাসিঙ্ক্রোনাস অপারেশনটি ক্রেডেনশিয়াল আনার জন্য প্রয়োজনীয় নেটওয়ার্ক অনুরোধগুলো সম্পাদন করবে। এই অপারেশনের ফলাফল xrSetGoogleCloudAuthCompleteANDROID থেকে XrFutureCompletionEXT :: futureResult এ ফেরত দেওয়া হবে। যদি ভবিষ্যতের ফলাফল XR_SUCCESS হয়, তাহলে কীলেস অথেন্টিকেশন ক্রেডেনশিয়াল সফলভাবে প্রয়োগ করা হয়েছে। যদি ভবিষ্যতের ফলাফল XR_ERROR_KEYLESS_AUTH_FAILED_ANDROID হয়, তাহলে অ্যাপ্লিকেশনটি পরে আবার চেষ্টা করতে পারে

বৈধ ব্যবহার (অন্তর্নিহিত)

xrSetGoogleCloudAuthAsyncANDROID ফাংশনটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:

XrResult xrSetGoogleCloudAuthAsyncANDROID(
    XrSession                                   session,
    const XrGoogleCloudAuthInfoBaseHeaderANDROID* authInfo,
    XrFutureEXT*                                future);

প্যারামিটার বিবরণ

  • session হলো সেই XrSession যা ক্রেডেনশিয়ালগুলো ব্যবহার করবে।
  • authInfo হলো একটি struct-এর পয়েন্টার যা প্রমাণীকরণ পদ্ধতি এবং প্যারামিটারগুলো নির্দিষ্ট করে, এবং এর XrGoogleCloudAuthInfoBaseHeaderANDROID :: type ফিল্ডটি নির্দিষ্ট struct-টিকে নির্দেশ করে।
  • future হলো একটি XrFutureEXT হ্যান্ডেলের পয়েন্টার, যেখানে তৈরি করা future-টি ফেরত দেওয়া হয়, অথবা XR_NULL_HANDLE, যদি ফাংশনটি XR_SUCCESS ফেরত না দেয়।

গুগল ক্লাউডের সাথে প্রমাণীকরণের জন্য ব্যবহৃত ক্রেডেনশিয়াল সেট করুন। এই অপারেশনটি অ্যাসিঙ্ক্রোনাস। ফিউচারটির রেডি অবস্থা পরীক্ষা করতে xrPollFutureEXT কল করুন। ফিউচারটি রেডি অবস্থায় এলে, ফলাফলটি পেতে xrSetGoogleCloudAuthCompleteANDROID কল করুন।

authInfo প্যারামিটারটি অবশ্যই এমন একটি struct-এর পয়েন্টার হতে হবে, যার XrGoogleCloudAuthInfoBaseHeaderANDROID :: type মেম্বারটি ব্যবহৃতব্য প্রমাণীকরণ পদ্ধতিকে শনাক্ত করে এবং যা XrGoogleCloudAuthInfoBaseHeaderANDROID-কে এক্সটেন্ড করে (যেমন XrGoogleCloudAuthInfoApiKeyANDROID )।

প্রতিটি প্রমাণীকরণ পদ্ধতির জন্য নির্দিষ্ট প্রয়োজনীয়তা, আচরণ এবং ত্রুটির শর্তাবলী (সিঙ্ক্রোনাস এবং অ্যাসিঙ্ক্রোনাস উভয়ই) তাদের নিজ নিজ ডেটা স্ট্রাক্টের ডকুমেন্টেশনে বর্ণনা করা হয়েছে।

বৈধ ব্যবহার (অন্তর্নিহিত)

রিটার্ন কোড

সাফল্য

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_KEYLESS_AUTH_NOT_SETUP_ANDROID
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_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 : কীলেস অথেন্টিকেশন ব্যর্থ হয়েছে। অ্যাপ্লিকেশনটি পরে আবার চেষ্টা করতে পারে । সফলতার জন্য অ্যাপ্লিকেশন বা ডেভেলপার কিছু পূর্বশর্তও যাচাই করতে পারে (যেমন, অ্যান্ড্রয়েডের ক্ষেত্রে, ডিভাইসটিতে গুগল প্লে সার্ভিসেস-এর একটি হালনাগাদ ইনস্টলেশন থাকতে হবে এবং এই পরিষেবাগুলো সঠিকভাবে কাজ করতে হবে )।

বৈধ ব্যবহার (অন্তর্নিহিত)

  • xrSetGoogleCloudAuthCompleteANDROID কল করার আগে XR_ANDROID_google_cloud_auth এক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে।
  • session অবশ্যই একটি বৈধ XrSession হ্যান্ডেল হতে হবে।
  • completion অবশ্যই একটি XrFutureCompletionEXT স্ট্রাকচারের দিকে নির্দেশকারী একটি পয়েন্টার হতে হবে।

রিটার্ন কোড

সাফল্য

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_FUTURE_INVALID_EXT
  • XR_ERROR_FUTURE_PENDING_EXT
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_VALIDATION_FAILURE

গুগল ক্লাউড অথেন্টিকেশন ত্রুটি

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;

গণনাকারীগুলোর নিম্নলিখিত মান রয়েছে:

এনামের বিবরণ

XR_GOOGLE_CLOUD_AUTH_ERROR_NONE_ANDROID

গুগল ক্লাউড এপিআই কল করার সময় কোনো ত্রুটি ঘটেনি।

XR_GOOGLE_CLOUD_AUTH_ERROR_QUOTA_EXCEEDED_ANDROID

গুগল ক্লাউড এপিআই ব্যবহারের সময় কোটা অতিক্রম করা হয়েছে।

XR_GOOGLE_CLOUD_AUTH_ERROR_UNREACHABLE_ANDROID

সম্ভবত নেটওয়ার্ক সংযোগ সমস্যা বা সার্ভারের প্রাপ্যতার কারণে গুগল ক্লাউড এপিআই-তে পৌঁছানো সম্ভব হয়নি।

XR_GOOGLE_CLOUD_AUTH_ERROR_ANDROID

গুগল ক্লাউড এপিআই কল করার সময় একটি অথেন্টিকেশন ত্রুটি ঘটেছে।

XrGoogleCloudAuthErrorResultANDROID কাঠামোটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:

typedef struct XrGoogleCloudAuthErrorResultANDROID {
    XrStructureType                  type;
    void*                            next;
    XrGoogleCloudAuthErrorANDROID    error;
} XrGoogleCloudAuthErrorResultANDROID;

সদস্যদের বিবরণ

  • type হলো এই স্ট্রাকচারটির XrStructureType
  • 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.
  }
}

নতুন কমান্ড

নতুন কাঠামো

নতুন এনাম

নতুন এনাম ধ্রুবক

  • XR_ANDROID_GOOGLE_CLOUD_AUTH_EXTENSION_NAME
  • XR_ANDROID_google_cloud_auth_SPEC_VERSION
  • XrResult- এর সম্প্রসারণ:

    • XR_ERROR_KEYLESS_AUTH_FAILED_ANDROID
    • XR_ERROR_KEYLESS_AUTH_NOT_SETUP_ANDROID
  • XrStructureType সম্প্রসারণ :

    • XR_TYPE_GOOGLE_CLOUD_AUTH_ERROR_RESULT_ANDROID
    • 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

সমস্যা

  • সংস্করণ ১, ২০২৫-১২-১৮ (বেন কিং)

    • প্রাথমিক সম্প্রসারণের বিবরণ।