启用订阅关联功能后,只有客户端 JavaScript 才能在 PPID
与读者的 Google 帐号之间建立新关联。在已配置的页面上,系统会向读者显示一个对话框,要求他们关联自己的订阅。读者点击“Continue with Google”按钮后,可以选择要关联的帐号,并在完成关联后将其重定向回已配置的页面。
您可以使用 swg.js
中的 linkSubscription 方法将 PPID 与读取器的帐号相关联。其用法与之前的帐号关联功能(示例)类似,但该方法接受的是包含 PPID 的对象,而不是传递 promise。
代码示例
这些客户端代码示例说明了如何启动链接、有效响应是什么样子,以及(可选)如何使用 swg.js
eventManager 来监听分析事件并相应地路由事件。
启动“订阅关联”对话框
const result = await subscriptions.linkSubscription({publisherProvidedId:6789})
响应示例
来自成功关联的帐号的有效响应同时包含关联中使用的 PPID
和布尔值 success
状态。
console.log(result) //{publisherProvidedId: 6789, success: true}
订阅关联不要求读者使用第三方 Cookie 或有效的 Google 会话。这样一来,就能随时在读者的体验中启动关联体验,而不是仅在购买后启动。如果读者没有登录 Google 帐号,可以在该流程中登录。
完整的客户端示例
<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 客户端 ID
虽然订阅关联功能不需要 OAuth 客户端,但可以使用 OAuth 客户端为您的项目编写已授权网域许可名单。已获授权的网域是一个网域列表,您的客户端 JavaScript 可以从这些网域发出调用。您的发布内容可能已经在发布商中心内配置了 OAuth 客户端 ID,以用于 swg.js
。
- 如果您的订阅关联客户端 JavaScript 调用来自之前通过验证的域名,则无需执行任何操作。
- 如果您的 JavaScript 通过新域名运行,请按照 SwG OAuth 客户端 ID 配置说明进行操作。
测试
为了测试“订阅关联”的客户端实现,必须从具有已获授权的 JavaScript 来源的服务器运行该代码。
- 为用于生产环境,已获授权的来源可以来自已配置的 OAuth 客户端,或来自发布商中心内发布内容设置中的已验证网域列表。
- 对于开发或预演用途,如果使用无法验证的网域(例如 localhost 或非公开服务器),该网域必须列在配置的 OAuth 客户端中。
排查错误
测试客户端 JavaScript 时,最常见的问题是在尝试运行 JavaScript 时收到 403 - Not Authorized
错误。如需解决此问题,请确保您是在发布商中心内通过经过验证的网域运行 JavaScript,或者在所关联 OAuth 客户端的授权 js 源中的主机上运行代码。