Auth API

Auth API एक OAuth फ़्लो है जो ServiceUser (किसी एक Space द्वारा संचालित उत्पाद के सामान्य साइन-अप उपयोगकर्ता) को सोशल लॉगिन से प्रमाणित करता है। ServiceLogin कॉन्फ़िगरेशन से जुड़े प्रदाता (उदाहरण के लिए Google) के ज़रिए लॉगिन करने पर यह API accessToken और refreshToken जारी करता है। जारी किया गया accessToken केवल ACMA और ACDA कॉल के लिए उपयोग किया जाने वाला Bearer टोकन है, और इसे CMA या CDA पर उपयोग नहीं किया जा सकता। पहचान की सीमा पार करने वाला कोई टोकन नहीं है।

बेस URL https://auth.weegloo.com/v1 है, और सभी पथ /spaces/{spaceId}/... के अंतर्गत हैं। सभी अनुरोध और प्रतिक्रिया बॉडी JSON हैं। यदि यह एक ब्राउज़र ऐप है, तो इन HTTP अनुरोधों और प्रतिक्रियाओं को सीधे संभालने के बजाय आधिकारिक SDK weegloo-service-user का उपयोग करने की अनुशंसा की जाती है। यह पृष्ठ उस SDK द्वारा भीतर कॉल किए जाने वाले HTTP अनुरोध और प्रतिक्रिया के प्रारूप को कवर करता है। जब आप ऐसे परिवेश (सर्वर, नेटिव, स्क्रिप्ट) में फ़्लो को सीधे लागू करते हैं जहाँ SDK का उपयोग नहीं किया जा सकता, तो इसे संदर्भ के रूप में देखें।

लॉगिन फ़्लो

नीचे दिया गया लॉगिन फ़्लो वेब ब्राउज़र ऐप के आधार पर है। नेटिव ऐप (Android और iOS) में कॉलबैक संभालने का तरीका अलग होता है, इसलिए उसे नेटिव ऐप कॉलबैक में अलग से बताया गया है।

लॉगिन चार चरणों में आगे बढ़ता है।

  1. ब्राउज़र को लॉगिन एंट्री URL (/spaces/{spaceId}/login/oauth2/{provider}) पर नेविगेट करें। यह URL उस रीडायरेक्ट शृंखला को शुरू करता है जो प्रदाता (Google) के लॉगिन स्क्रीन तक ले जाती है।
  2. लॉगिन पूरा होने पर Weegloo ब्राउज़र को ServiceLogin में कॉन्फ़िगर किए गए callbackUrl पर वापस भेजता है, और पते में ?exchangeToken=<एक-बार-उपयोग टोकन> जोड़ देता है।
  3. कॉलबैक पृष्ठ पते से exchangeToken पढ़ता है, उसे टोकन एक्सचेंज एंडपॉइंट (POST /spaces/{spaceId}/oauth/token) पर भेजता है, और प्रतिक्रिया के रूप में accessToken और refreshToken प्राप्त करता है।
  4. इसके बाद accessToken को Bearer टोकन के रूप में उपयोग करके ACMA और ACDA को कॉल करें। समाप्ति (expiresAt) से पहले refreshToken के साथ नवीनीकरण करें, और लॉग आउट करते समय टोकन को रद्द करें।

exchangeToken एक-बार-उपयोग वाला है। कॉलबैक को संभालने के तुरंत बाद इसे पता बार से हटा दें ताकि एक्सपोज़र और पुन: उपयोग रोका जा सके (SDK का उपयोग करने पर यह स्वतः संभाल लिया जाता है)।

नेटिव ऐप कॉलबैक: डीपलिंक ब्रिज

Android और iOS नेटिव ऐप भी उसी OAuth फ़्लो से लॉगिन करते हैं। लेकिन callbackUrl में केवल वेब पता ही डाला जा सकता है, इसलिए जुड़ने का तरीका अलग हो जाता है।

दस्तावेज़ के अनुसार समर्थित callbackUrl https://... जैसा वेब पता होता है। myapp:// जैसी, ऐप द्वारा पंजीकृत कस्टम स्कीम अस्वीकार कर दी जाती है, इसलिए उसे कॉलबैक पते के रूप में सीधे इस्तेमाल नहीं किया जा सकता। इसलिए नेटिव ऐप callbackUrl को Web Hosting पर अपलोड किए गए https ब्रिज पृष्ठ के रूप में रखता है, और वह पृष्ठ कॉलबैक में आए ?exchangeToken=... को ऐप के डीपलिंक (उदाहरण: myapp://auth/callback?exchangeToken=...) पर आगे भेज देता है। ऐप उस exchangeToken से टोकन एक्सचेंज (ऊपर दिए लॉगिन फ़्लो का चरण 3, POST /spaces/{spaceId}/oauth/token) खुद करता है।

  • डीपलिंक से केवल एक-बार-उपयोग वाला exchangeToken भेजा जाता है। accessToken और refreshToken को ऐप खुद एक्सचेंज करके प्राप्त करता है, इसलिए वे डीपलिंक से नहीं जाते। ब्रिज पृष्ठ भी मान भेजने के बाद पते से exchangeToken हटा देता है (लॉगिन फ़्लो के कॉलबैक जैसा ही सिद्धांत)।
  • यदि संभव हो तो सत्यापित डीपलिंक (Android App Links, iOS Universal Links) का उपयोग करें। असत्यापित कस्टम स्कीम को डिवाइस पर इंस्टॉल किया गया कोई दूसरा ऐप बीच में पकड़ सकता है।
  • प्रदाता (उदाहरण के लिए Google) का OAuth क्लाइंट, नेटिव ऐप होने पर भी, Web application प्रकार का बनाया जाता है। इसका कारण यह है कि OAuth रीडायरेक्ट ऐप की नहीं, बल्कि auth.weegloo.com (वेब पता) की ओर जाता है।

ब्रिज पृष्ठ को डिप्लॉय करने का तरीका Web Hosting में बताया गया है।

टोकन मॉडल

टोकन एक्सचेंज और नवीनीकरण एक ही आकार की टोकन प्रतिक्रिया लौटाते हैं। प्रतिक्रिया में निहित टोकन स्ट्रिंग और समय नीचे दिए गए उदाहरण मान हैं, जबकि वास्तव में ये अपारदर्शी गुप्त स्ट्रिंग होते हैं (चूँकि यह फ़्लो प्रदाता लॉगिन से होकर गुज़रता है, इसलिए वास्तविक मानों को ज्यों का त्यों नहीं रखा जा सकता)।

{
  "accessToken": "QY3xK9pR2mLs7Vc0Zt8Nf4Wd1Bj6Hg5Ua2Ee9Ck3PoZt8Nf4Wd",
  "tokenType": "Bearer",
  "scope": ["APP"],
  "createdAt": "2026-06-18T05:00:00.000Z",
  "expiresAt": "2026-06-19T05:00:00.000Z",
  "refreshToken": "Rf7Hn2Qw9Zx4Tp1Lk6Vc3Bm8Yd5Gs0Ae2Uj7Co4NeLk6Vc3Bm",
  "refreshExpiresAt": "2026-06-21T05:00:00.000Z"
}
फ़ील्डटाइपविवरण
accessTokenstringACMA और ACDA कॉल के लिए उपयोग किया जाने वाला Bearer टोकन।
tokenTypestringटोकन का प्रकार। हमेशा "Bearer"
scopestring ऐरेटोकन का अनुमति दायरा। ServiceUser टोकन के लिए ["APP"]
createdAtstring (date-time)टोकन जारी होने का समय।
expiresAtstring (date-time)accessToken की समाप्ति का समय।
refreshTokenstringaccessToken को नवीनीकृत करते समय उपयोग किया जाने वाला टोकन।
refreshExpiresAtstring (date-time)refreshToken की समाप्ति का समय। createdAt से 3 दिन बाद।

तीनों टोकन की अवधि इस प्रकार है।

  • exchangeToken एक-बार-उपयोग वाला है और इसकी अवधि छोटी है। कॉलबैक के तुरंत बाद इसे एक्सचेंज करना ज़रूरी है। यह एक्सचेंज प्रतिक्रिया में शामिल नहीं होता, और लॉगिन फ़्लो के चरण 2 में पते के ज़रिए पहुँचाया जाता है।
  • accessToken की अवधि कोई निश्चित मान नहीं है। सटीक समाप्ति समय प्रतिक्रिया के expiresAt में निहित होता है, इसलिए उसी मान से इसे परखें। यह केवल ACMA और ACDA के लिए है।
  • refreshToken जारी होने के बाद 3 दिनों तक मान्य रहता है (refreshExpiresAt)। नवीनीकरण कॉल करने पर एक नया accessToken और refreshToken युग्म जारी होता है और पिछला युग्म रद्द हो जाता है (रोटेशन, rotation)। हर नवीनीकरण के साथ ठीक पिछला refreshToken अब उपयोग योग्य नहीं रहता।

API

नीचे दिए गए चारों एंडपॉइंट का बेस URL https://auth.weegloo.com/v1 है। इन्हें लॉगिन एंट्री (GET), टोकन एक्सचेंज (POST), टोकन नवीनीकरण (POST), लॉगआउट (DELETE) के क्रम में कवर किया गया है।

  • ServiceUser लॉगिन (अवधारणा): ServiceLogin को कंटेंट स्टूडियो में कॉन्फ़िगर करने का तरीका।
  • ACMA: जारी किए गए टोकन से सदस्य कॉन्टेंट को संभालने वाला API।
  • ACDA: सदस्यों तक पहुँचाई जाने वाली रीड API।