स्टोर के लिए एक खाता
SDK से ग्राहक ऐप वाले खाते का उपयोग करके स्टोर में लॉगिन कर सकते हैं। यह दस्तावेज़ समर्थित स्टोर में उपलब्ध मेथड बताता है।
केंद्रीय विंडो में लॉगिन और खाता बनाने की सुविधा है। उसका इंटरफ़ेस अभी फ़्रेंच और अंग्रेज़ी में है; दस्तावेज़ बारह भाषाओं में उपलब्ध हैं।
लॉगिन जोड़ें
समर्थित स्टोर पर window.rankappConnect पहले से लोड और कॉन्फ़िगर होता है। तीन मेथड इस्तेमाल करें: login(), getSession() और logout()। अतिरिक्त इंस्टॉलेशन की आवश्यकता नहीं है। पूरा उदाहरण केवल बटन और सुलभ स्थिति संदेश जोड़ता है।
क्लिक से सीधे login() कॉल करें। Promise {status: "success", session}, {status: "cancelled"} या {status: "redirecting"} लौटाता है। त्रुटियाँ स्थिर कोड के साथ Promise अस्वीकार करती हैं। मोबाइल या पॉपअप ब्लॉक होने पर रीडायरेक्ट होता है। returnTo आपके स्टोर के अंदर होना चाहिए।
const connect = window.rankappConnect;
function onSignInClick() {
return connect.login({ returnTo: '/account' });
}
function readSession() {
return connect.getSession();
}
function onSignOutClick() {
return connect.logout();
}बटन और संदेशों वाला पूरा उदाहरण देखें
<button type="button" id="connect-login">RankAPP से लॉगिन करें</button>
<button type="button" id="connect-logout" hidden>लॉगआउट करें</button>
<p id="connect-status" role="status" aria-live="polite"></p>
<script>
const connect = window.rankappConnect;
const login = document.querySelector('#connect-login');
const logout = document.querySelector('#connect-logout');
const status = document.querySelector('#connect-status');
const copy = {
"cancelled": "साइन-इन रद्द कर दिया गया। आप फिर कोशिश कर सकते हैं।",
"redirecting": "साइन-इन पेज पर भेजा जा रहा है…",
"login": "RankAPP से लॉगिन करें",
"logout": "लॉगआउट करें",
"signedOut": "आप लॉगआउट हैं।",
"signedIn": "लॉगिन: ",
"error": "लॉगिन उपलब्ध नहीं है। फिर कोशिश करें।",
"pending": "लॉगिन हो रहा है…"
};
function render(session) {
status.textContent = session.authenticated
? copy.signedIn + session.user.username : copy.signedOut;
logout.hidden = !session.authenticated;
}
function failure() {
status.textContent = copy.error;
}
function busy(value) {
login.disabled = logout.disabled = value;
}
login.addEventListener('click', async () => {
busy(true);
status.textContent = copy.pending;
let redirecting = false;
try {
const result = await connect.login({ returnTo: '/account' });
if (result.status === 'success') render(result.session);
else if (result.status === 'cancelled') status.textContent = copy.cancelled;
else {
redirecting = true;
status.textContent = copy.redirecting;
}
} catch (error) { failure(); }
finally { if (!redirecting) busy(false); }
});
logout.addEventListener('click', async () => {
busy(true);
try { render(await connect.logout()); }
catch (error) { failure(); }
finally { busy(false); }
});
busy(true);
connect.getSession().then(render).catch(failure)
.finally(() => busy(false));
</script>सत्र दिखाएँ
getSession() सर्वर से स्थिति पढ़ता है: {authenticated: false} का अर्थ है साइन आउट। प्रमाणित सत्र में user (userId, username, avatarUrl, language) और प्रबंधित स्टोर में orders होते हैं। पेज लोड और रीडायरेक्ट के बाद इसे कॉल करें; URL पैरामीटर से पहचान का अनुमान न लगाएँ।
सेवा की विफलताएँ त्रुटियाँ ही रहती हैं: STOREFRONT_SESSION_ERROR को साइन-आउट स्थिति में नहीं बदला जाता। फिर कोशिश करने का संदेश दिखाएँ। login() रद्द होने और विफलता में अंतर करता है; logout() केवल स्टोर का सत्र समाप्त करता है।
पहचान और कुकी
SDK स्थानीय विकास सहित सभी साइटों और एंडपॉइंट के लिए HTTPS अनिवार्य करता है। ऐसे प्रमाणपत्र वाला स्थानीय HTTPS सर्वर इस्तेमाल करें जिस पर आपका ब्राउज़र भरोसा करता हो। प्रमाणीकरण के लिए HTTP कभी स्वीकार नहीं किया जाता।
पासवर्ड auth.rankapp.io पर दर्ज होता है, विक्रेता की वेबसाइट पर नहीं। एकबारगी कोड और PKCE S256 विंडो को मूल अनुरोध से जोड़ते हैं। कोड का आदान-प्रदान और टोकन सर्वर पर रहते हैं। पॉपअप के संदेश में टोकन नहीं होता।
सत्र कुकी HttpOnly, Secure और SameSite=Lax हैं। हर कुकी अपने होस्ट तक सीमित है; साझा Domain नहीं है। केंद्रीय और स्टोर सत्र अलग हैं। logout() स्टोर का सत्र समाप्त करता है, केंद्रीय लॉगिन अपने आप नहीं।
स्टोर सर्वर की भूमिका
यह दस्तावेज़ SDK 1.1.0 के लिए है। संगत स्टोर में केवल पहले से कॉन्फ़िगर किए गए window.rankappConnect क्लाइंट का उपयोग करें। सर्वर लॉगिन, सत्र और लॉगआउट संभालता है; क्लाइंट आवश्यक हस्ताक्षरित अनुरोध भेजता है। पेज में एंडपॉइंट या एडाप्टर कॉन्फ़िगर करने की ज़रूरत नहीं है।
प्रीव्यू में जाँचें
प्रीव्यू में असली खाते से ग्राहक की तरह लॉगिन और लॉगआउट जाँच सकते हैं। निजी ड्राफ़्ट की अनुमति अलग है: प्रीव्यू खुलने से खरीदार लॉगिन नहीं होता। वहाँ भुगतान बंद रहता है।
सफलता, रद्द करना, पॉपअप बंद करना, मोबाइल वापसी और लॉगआउट के बाद फिर लॉगिन जाँचें। प्रोडक्शन स्टोर प्रकाशित और उपलब्ध होना चाहिए। लॉगिन की सफलता भुगतान की पुष्टि नहीं है; भुगतान का परिणाम अलग जाँचें।
बाहरी एकीकरण की तैयारी
स्वतंत्र बाहरी वेबसाइट के लिए पंजीकरण अभी खुला नहीं है। पहले क्लाइंट पंजीकरण, वापसी URL की पुष्टि और पहुँच अधिकार तय करने होंगे। ब्राउज़र लाइब्रेरी इन सर्वर नियमों की जगह नहीं लेती।
संगत मानकर client_id, टोकन एंडपॉइंट या OIDC विन्यास न बनाएँ। वर्तमान अनुबंध समर्थित स्टोर और उनके एडेप्टर तक सीमित है। विक्रेता के JavaScript में पासवर्ड या टोकन न रखें। सर्वर से सत्र की पुष्टि करें और अस्थायी त्रुटि या रद्द होने पर स्पष्ट संदेश दिखाएँ।