Abonelik bağlantısı ile, PPID ile okuyucunun Google Hesabı arasında yeni bir ilişkilendirme oluşturmanın tek yolu istemci tarafı JavaScript'tir. Yapılandırılmış bir sayfada, okuyucuya aboneliğini bağlamasını isteyen bir iletişim kutusu gösterilir. Okuyucu "Google ile Devam Et" düğmesini tıkladıktan sonra bağlanılacak bir hesap seçebilir ve işlem tamamlandığında yapılandırılmış sayfaya geri gönderilir.
Abonelik bağlantısı, okuyucunun üçüncü taraf çerezlerini kullanmasını veya etkin bir Google oturumu açmasını gerektirmez. Bu sayede, okuyucunun deneyiminde bağlantı deneyimi, yalnızca satın alma işleminden sonra değil, herhangi bir zamanda başlatılabilir. Google Hesabı'na giriş yapmamış olan okuyuculara, akışın bir parçası olarak giriş yapma fırsatı verilir.
Kod örnekleri
Bu istemci tarafı kod örnekleri, bağlantının nasıl başlatılacağını, geçerli bir yanıtın nasıl göründüğünü ve (isteğe bağlı olarak) analiz etkinliklerini dinlemek ve bunları uygun şekilde yönlendirmek için swg.js eventManager'ın nasıl kullanılacağını gösterir.
Tek bir yayını bağlama
Tek bir yayın için PPID'yi okuyucunun hesabıyla ilişkilendirme işlemi, swg.js içindeki linkSubscription yöntemi kullanılarak yapılır.
Bu kullanım, önceki Hesap Bağlama özelliğine (örnek) benzer ancak bir söz iletmek yerine PPID'yi içeren bir nesneyi kabul eder.
const result = await subscriptions.linkSubscription({publisherProvidedId:6789})
Örnek yanıt (arayüz)
Başarıyla bağlanmış bir hesaptan gelen geçerli yanıtlarda, bağlantıda kullanılan PPID ve bir boolean success durumu bulunur.
{
publisherProvidedId: 6789,
success: true
}
Birden fazla yayını paketleme
linkSubscriptions işlevine bağımsız değişken olarak bir nesne ileterek abonelik bağlantısı için birden fazla yayını tek seferde paketleyebilirsiniz. linkTo özelliği, nesneler dizisidir. Her nesne, belirli bir publicationId ve buna karşılık gelen, bağlanacak publisherProvidedId (PPID) değerini temsil eder.
const result = await subscriptions.linkSubscriptions({linkTo: [
{ publicationId: 'pubId1', publisherProvidedId: 'ppid1' },
{ publicationId: 'pubId2', publisherProvidedId: 'ppid2' },
…
]});
Örnek yanıtlar (arayüz)
anyFailure (boolean) ve anySuccess (boolean) alanları, paket aboneliği bağlantısı oluşturma girişiminde herhangi bir başarısızlık veya başarı olup olmadığını gösterir. links alanı, yayınların her birine ait sonuçların ayrıntılarını içerir.
Tüm yayınlara başarılı bağlantı oluşturma
{
"anyFailure": false,
"anySuccess": true,
"links": [{
"publicationId": "CAowqfCKCw",
"publisherProvidedId": "370720",
"success": true
},
{
"publicationId": "CAow5rTUCw",
"publisherProvidedId": "171385",
"success": true
}]
}
Yayınlardan herhangi birinin bağlanmaması
{
"anyFailure": true,
"anySuccess": true,
"links": [{
"publicationId": "CAowqfCKCw",
"publisherProvidedId": "370720",
"success": false
},
{
"publicationId": "CAow5rTUCw",
"publisherProvidedId": "171385",
"success": true
}]
}
linkSubscription için istemci tarafı örneğini tamamlama
<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 istemci kimliği oluşturma
Abonelik bağlama için OAuth istemcisi gerekli olmasa da projeniz için yetkili alanların izin verilenler listesini oluşturmak üzere OAuth istemcisi kullanılabilir.
Yetkili alanlar, istemci tarafı JavaScript'inizin çağrı yapmasına izin verilen alanların listesidir. Yayınınızda, swg.js ile kullanılmak üzere Publisher Center'da büyük olasılıkla zaten bir OAuth istemci kimliği yapılandırılmıştır.
- Abonelik Bağlantısı istemci tarafı JavaScript çağrılarınız daha önce doğrulanmış bir alan adından geliyorsa herhangi bir işlem yapmanız gerekmez.
- JavaScript'iniz yeni bir alan adından çalışıyorsa SwG OAuth istemci kimliği yapılandırma talimatlarını uygulayın.
Test
Abonelik Bağlantısı'nın istemci tarafı uygulamasını test etmek için kodun, yetkilendirilmiş bir JavaScript kaynağına sahip bir sunucudan çalıştırılması gerekir.
- Üretim kullanımında, yetkili kaynaklar yapılandırılmış OAuth istemcisinden veya Publisher Center'daki yayın ayarlarında bulunan doğrulanmış alanlar listesinden gelebilir.
- Geliştirme veya hazırlama kullanımı için, doğrulanamayan bir alanla (ör. localhost veya herkese açık olmayan bir sunucu) yapılandırılan OAuth istemcisinde alanın listelenmesi gerekir.
Hataları giderme
İstemci tarafı JavaScript'i test ederken en sık karşılaşılan sorun, JavaScript'i çalıştırmaya çalışırken 403 - Not Authorized hatası alınmasıdır. Bu sorunu çözmek için Publisher Center'da JavaScript'i doğrulanmış bir alandan çalıştırdığınızdan veya kodu, bağlı OAuth istemcisinin yetkilendirilmiş JS kaynaklarında bulunan bir ana makinede çalıştırdığınızdan emin olun.
Sonraki adım
İstemci tarafı JavaScript entegrasyonunu tamamladığınız için tebrik ederiz. Artık sunucu tarafı entegrasyonuna geçebilirsiniz.
Bu adım, okuyucularınızın haklarını senkronize etmek için gereklidir. Gerekli sunucu tarafı UpdateReaderEntitlements işlevini uyguladığınızda ve kullandığınızda, doğru aboneler için doğru makalelerin vurgulanmasını sağlarsınız.