JavaScript de clientes

Um exemplo da caixa de diálogo pedindo ao assinante para vincular a assinatura

Com a vinculação de assinaturas, o JavaScript do lado do cliente é a única maneira de criar uma nova associação entre um PPID e a Conta do Google de um leitor. Em uma página configurada, o leitor é apresentado a uma caixa de diálogo solicitando a vinculação da assinatura. Depois que o leitor clicar no botão "Continuar com o Google", poderá escolher uma conta para vincular e voltar à página configurada ao concluir.

A associação do PPID à conta do leitor é feita usando o método linkSubscription em swg.js. O uso é semelhante ao recurso de vinculação de conta anterior (exemplo), mas, em vez de transmitir uma promessa, o método aceita um objeto contendo o PPID.

Exemplos de código

Esses exemplos de código do lado do cliente ilustram como iniciar um link, como é uma resposta válida e, opcionalmente, como usar o eventManager swg.js para detectar eventos analíticos e encaminhá-los.

Iniciar a caixa de diálogo Vinculação de assinaturas

const result = await subscriptions.linkSubscription({publisherProvidedId:6789})

Exemplo de resposta

Respostas válidas de uma conta vinculada contêm o PPID usado no link e um status success booleano.

console.log(result) //{publisherProvidedId: 6789, success: true}

A vinculação de assinaturas não exige do leitor o uso de cookies de terceiros nem uma sessão ativa do Google. Isso permite lançar a vinculação de forma flexível, a qualquer momento da experiência do leitor, e não apenas após uma compra. Se o leitor não estiver conectado a uma Conta do Google, ele poderá fazer isso como parte do fluxo.

Completar o exemplo do lado do cliente

<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>

Criar um ID do cliente OAuth

Embora o cliente OAuth não seja necessário para a vinculação de assinaturas, pode ser usado para criar a lista de permissões de domínios autorizados para o projeto. Os domínios autorizados são uma lista dos domínios que podem receber chamadas do JavaScript do lado do cliente. É provável que sua publicação já tenha um ID do cliente OAuth configurado na Central do Editor para uso com swg.js.

Teste

Para testar a implementação da vinculação de assinaturas do lado do cliente, o código precisa ser executado a partir de um servidor com uma origem JavaScript autorizada.

  1. Para uso em produção, origens autorizadas podem vir de clientes OAuth configurados ou da lista de domínios verificados nas configurações da publicação na Central do Editor.
  2. Para uso em desenvolvimento ou teste, com um domínio não verificável (por exemplo, localhost ou um servidor não público), o domínio precisa estar listado no cliente OAuth configurado.

Solucionar erros

O problema mais comum ao testar o JavaScript do lado do cliente é receber um erro 403 - Not Authorized ao tentar executar o JavaScript. Para resolver, verifique se você está executando o JavaScript em um domínio validado na Central do Editor ou em um host que está nas origens autorizadas do JavaScript do cliente OAuth vinculado.