सदस्यता लिंक करने के बाद, PPID और लोगों के Google खाते के बीच नया असोसिएशन बनाने के लिए, सिर्फ़ क्लाइंट-साइड JavaScript का इस्तेमाल किया जा सकता है. कॉन्फ़िगर किए गए पेज पर, लोगों को एक डायलॉग दिखता है. इस डायलॉग में उनसे अपनी सदस्यता लिंक करने के लिए कहा जाता है. "Google के साथ जारी रखें" बटन पर क्लिक करने के बाद, ये लोग लिंक करने के लिए कोई खाता चुन सकते हैं. खाता लिंक करने की प्रोसेस पूरी होने के बाद, उन्हें कॉन्फ़िगर किए गए पेज पर वापस भेज दिया जाता है.
सदस्यता लिंक करने के लिए, तीसरे पक्ष की कुकी या लोगों के ऐक्टिव Google सेशन की ज़रूरत नहीं होती. इसकी मदद से, लोग किसी भी समय, सदस्यता लिंक कर सकते हैं. यह ज़रूरी नहीं है कि ऐसा सदस्यता खरीदने के बाद ही किया जाए. अगर किसी व्यक्ति ने Google खाते में लॉग इन नहीं किया है, तो उसे फ़्लो के दौरान ऐसा करने का मौका दिया जाता है.
कोड के उदाहरण
क्लाइंट-साइड कोड के इन उदाहरणों में दिखाया गया है कि खाता लिंक करने की प्रोसेस कैसे शुरू की जाती है, सही रिस्पॉन्स कैसा दिखता है, और Analytics इवेंट को सुनने और उन्हें सही जगह पर भेजने के लिए, swg.js eventManager का इस्तेमाल कैसे किया जाता है. हालांकि, इस कोड को इस्तेमाल करना ज़रूरी नहीं है.
किसी एक पब्लिकेशन को लिंक करना
किसी एक पब्लिकेशन के लिए, पीपीआईडी को लोगों के खाते से जोड़ने के लिए, swg.js में linkSubscription वाले तरीके का इस्तेमाल किया जाता है.
यह तरीका, खाता लिंक करने की पिछली सुविधा (उदाहरण) की तरह ही है. हालांकि, यह प्रॉमिस पास करने के बजाय, पीपीआईडी वाले ऑब्जेक्ट को स्वीकार करता है.
const result = await subscriptions.linkSubscription({publisherProvidedId:6789})
जवाब का उदाहरण (इंटरफ़ेस)
लिंक किए गए खाते के सही रिस्पॉन्स में, लिंक में इस्तेमाल किया गया PPID और बूलियन success स्टेटस, दोनों शामिल होते हैं.
{
publisherProvidedId: 6789,
success: true
}
एक से ज़्यादा पब्लिकेशन का बंडल बनाना
linkSubscriptions फ़ंक्शन में किसी ऑब्जेक्ट को आर्ग्युमेंट के तौर पर पास करके, एक साथ कई पब्लिकेशन को सदस्यता लिंक करने के लिए बंडल किया जा सकता है. linkTo प्रॉपर्टी, ऑब्जेक्ट का एक कलेक्शन है. इसमें हर ऑब्जेक्ट, लिंक किए जाने वाले किसी खास publicationId और उसके publisherProvidedId (पीपीआईडी) को दिखाता है.
const result = await subscriptions.linkSubscriptions({linkTo: [
{ publicationId: 'pubId1', publisherProvidedId: 'ppid1' },
{ publicationId: 'pubId2', publisherProvidedId: 'ppid2' },
…
]});
जवाब के उदाहरण (इंटरफ़ेस)
anyFailure (बूलियन) और anySuccess (बूलियन) फ़ील्ड से पता चलता है कि बंडल की सदस्यता लिंक करने की कोशिश सफल हुई या नहीं. links फ़ील्ड में, हर पब्लिकेशन के नतीजों की जानकारी होती है.
सभी पब्लिकेशन से लिंक करने की प्रोसेस पूरी हो गई है
{
"anyFailure": false,
"anySuccess": true,
"links": [{
"publicationId": "CAowqfCKCw",
"publisherProvidedId": "370720",
"success": true
},
{
"publicationId": "CAow5rTUCw",
"publisherProvidedId": "171385",
"success": true
}]
}
किसी भी पब्लिकेशन को लिंक न करना
{
"anyFailure": true,
"anySuccess": true,
"links": [{
"publicationId": "CAowqfCKCw",
"publisherProvidedId": "370720",
"success": false
},
{
"publicationId": "CAow5rTUCw",
"publisherProvidedId": "171385",
"success": true
}]
}
linkSubscription के लिए क्लाइंट-साइड का पूरा उदाहरण
<script
async
type="application/javascript"
subscriptions-control="manual"
src="https://news.google.com/swg/js/v1/swg.js">
</script>
<script>
function linkSubscription(ppid) {
self.SWG.push(async (subscriptions) => {
try {
const result = await subscriptions.linkSubscription({
publisherProvidedId: ppid,
})
console.log(result)
} catch(e) {
console.log(e)
}
})
}
document.addEventListener('DOMContentLoaded', function () {
(self.SWG = self.SWG || []).push(subscriptions => {
subscriptions.init("PUBLICATION_ID");
//Configure the event manager for analytics integration
subscriptions.getEventManager().then(manager => {
manager.registerEventListener((event) => {
// Add code here to send the event to your analytics
// sendToAnalytics(event);
console.log(event);
});
});
});
document
.querySelector("SELECTOR")
.addEventListener('click', function(){
linkSubscription(PPID)
})
});
</script>
OAuth क्लाइंट आईडी बनाना
सदस्यता लिंक करने के लिए, OAuth क्लाइंट का इस्तेमाल करना ज़रूरी नहीं है. हालांकि, आपके प्रोजेक्ट के हिसाब से, अनुमति वाले डोमेन की सूची बनाने के लिए OAuth क्लाइंट का इस्तेमाल किया जा सकता है.
अनुमति वाले डोमेन, ऐसे डोमेन होते हैं जिनसे आपके क्लाइंट-साइड JavaScript को कॉल करने की अनुमति होती है. आपके पब्लिकेशन में पहले से ही, OAuth क्लाइंट आईडी कॉन्फ़िगर किया हुआ है. इसे swg.js के साथ इस्तेमाल करने के लिए, Publisher Center में कॉन्फ़िगर किया गया है.
- अगर सदस्यता लिंक करने वाला आपका क्लाइंट-साइड JavaScript, उस डोमेन नेम से चल रहा है जिसकी पहले ही पुष्टि हो चुकी है, तो आपको कुछ करने की ज़रूरत नहीं है.
- अगर आपका JavaScript नए डोमेन नेम से चल रहा है, तो SwG OAuth क्लाइंट आईडी कॉन्फ़िगर करने के निर्देशों को अपनाएं.
टेस्ट करना
कोड को ऐसे सर्वर से चलाना ज़रूरी है जिसकी javaScript ऑरिजिन को अनुमति मिली हो. इससे यह जांच हो पाएगी कि सदस्यता से लिंक की गई क्लाइंट-साइड लागू हुई है या नहीं.
- अनुमति की ऑरिजिन या तो कॉन्फ़िगर किए गए OAuth क्लाइंट से होनी चाहिए या फिर Publisher Center के अंदर पब्लिकेशन सेटिंग में मौजूद ऐसे डोमेन की सूची से होनी चाहिए जिनकी पुष्टि हो चुकी हो. इस शर्त को पूरा करने वाली अनुमति को ही प्रॉडक्शन में इस्तेमाल के किया जा सकेगा.
- बिना पुष्टि वाले डोमेन को डेवलपमेंट या स्टेजिंग में इस्तेमाल करने के लिए, यह ज़रूरी है कि वह डोमेन, कॉन्फ़िगर किए गए OAuth Client की सूची में शामिल हो. बिना पुष्टि वाले डोमेन के उदाहरणों में, localhost या ऐसे सर्वर शामिल हैं जो सार्वजनिक इस्तेमाल के लिए उपलब्ध नहीं होते.
गड़बड़ियां ठीक करना
क्लाइंट-साइड javaScript की जांच करते समय दिखने वाली सबसे आम समस्या, 403 - Not Authorized की गड़बड़ी का दिखना है. यह गड़बड़ी तब दिखती है, जब javascript चलाने की कोशिश की जाती है. इस समस्या को ठीक करने के लिए, देख लें कि Publisher Center में javascript उस डोमेन से चलाया जा रहा हो जिसकी पुष्टि हो चुकी है या फिर कोड को उस होस्ट पर चलाया जा रहा हो जो लिंक किए गए OAuth क्लाइंट से अनुमति पा चुकी js ऑरिजिन में मौजूद है.
अगला चरण
क्लाइंट-साइड JavaScript इंटिग्रेशन पूरा करने के लिए बधाई. अब सर्वर-साइड इंटिग्रेशन पर जाएं.
यह चरण पूरा करना ज़रूरी है, ताकि आपके दर्शकों के एनटाइटलमेंट सिंक हो सकें. ज़रूरी सर्वर-साइड UpdateReaderEntitlements फ़ंक्शन को लागू करने और उसका इस्तेमाल करने पर, यह पक्का किया जा सकता है कि सही सदस्यों के लिए सही लेख हाइलाइट किए गए हों.