При Subscription Linking клиентский javascript — единственный способ создать новую связь между PPID
и учетной записью Google читателя. На настроенной странице читателю предлагается диалоговое окно с просьбой привязать свою подписку. После того, как читатель нажмет кнопку «Продолжить с Google», он может выбрать учетную запись для привязки и вернуться на настроенную страницу после завершения.
Связывание подписки не требует использования сторонних файлов cookie или активного сеанса Google для читателя. Это гибко позволяет запустить процесс связывания в любой момент в опыте читателя, а не только после покупки. Если читатель не вошел в учетную запись Google, ему предоставляется возможность сделать это в рамках потока.
Примеры кода
Эти примеры клиентского кода иллюстрируют, как инициировать ссылку, как выглядит допустимый ответ и (необязательно) как использовать eventManager swg.js
для прослушивания аналитических событий и их соответствующей маршрутизации.
Ссылка на одну публикацию
Связывание PPID с учетной записью читателя для одной публикации выполняется с помощью метода linkSubscription
в swg.js
Использование аналогично предыдущей функции Account Linking ( пример ), но вместо передачи обещания метод принимает объект, содержащий PPID.
const result = await subscriptions.linkSubscription({publisherProvidedId:6789})
Пример ответа ( интерфейс )
Допустимые ответы от успешно связанной учетной записи содержат как PPID
, используемый в ссылке, так и логический статус success
.
{
publisherProvidedId: 6789,
success: true
}
Объединить несколько публикаций
Вы можете объединить несколько публикаций для Subscription Linking одновременно, передав объект в качестве аргумента функции linkSubscriptions
. Свойство linkTo
представляет собой массив объектов, где каждый объект представляет определенный publicationId
и соответствующий ему publisherProvidedId
(PPID) для связывания.
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 не требуется для Subscription Linking, клиент OAuth может использоваться для создания списка разрешенных доменов для вашего проекта. Авторизованные домены — это список доменов, с которых вашему клиентскому javascript разрешено совершать вызовы. Вероятно, у вашей публикации уже есть настроенный в Publisher Center идентификатор клиента OAuth для использования с swg.js
- Если ваши клиентские вызовы JavaScript для привязки подписки исходят из ранее проверенного доменного имени, никаких действий не требуется.
- Если ваш JavaScript запускается с нового доменного имени, следуйте инструкциям по настройке идентификатора клиента SwG OAuth .
Тестирование
Чтобы протестировать реализацию Subscription Linking на стороне клиента, код должен быть запущен с сервера с авторизованным источником JavaScript.
- Для производственного использования авторизованные источники могут поступать либо из настроенного клиента OAuth, либо из списка проверенных доменов в настройках публикации в Центре издателей.
- Для разработки или промежуточного использования с непроверяемым доменом (например, localhost или непубличный сервер) домен должен быть указан в настроенном клиенте OAuth.
Устранение ошибок
Наиболее распространенной проблемой при тестировании клиентского javascript является получение ошибки 403 - Not Authorized
при попытке запустить javascript. Чтобы решить эту проблему, убедитесь, что вы запускаете javascript из проверенного домена в Publisher Center или что вы запускаете код на хосте, который находится в авторизованных источниках js связанного клиента OAuth.
Следующий шаг
Поздравляем с завершением клиентской интеграции JavaScript. Теперь вы можете перейти к серверной интеграции . Это обязательный шаг для синхронизации прав ваших читателей. При реализации и использовании требуемой серверной функции UpdateReaderEntitlements
вы гарантируете, что нужные статьи будут выделены для нужных подписчиков.