DataFirefly Social Connect: guia completo
Instalar, configurar e explorar o início de sessão social com 6 fornecedores para WooCommerce: Google com One-Tap, Apple, Facebook, Microsoft, LinkedIn e X, painel estatístico, atribuição das encomendas, teste A/B e antifraude.
Apresentação
O DataFirefly Social Connect acrescenta à sua loja WooCommerce um início de sessão social num clique através de seis fornecedores (Google, Apple, Facebook, Microsoft, LinkedIn e X), um painel estatístico completo, a atribuição das encomendas ao fornecedor de origem, um teste A/B dos botões, um sistema antifraude e a conformidade RGPD nativa.
O plugin não usa qualquer biblioteca de CDN externa: os gráficos do painel são desenhados em canvas HTML5 nativo, e os fluxos OAuth 2.0 e OpenID Connect são implementados diretamente no módulo (verificação completa das assinaturas JWKS no Google One-Tap, assinatura ES256 em tempo real na Apple, reforço com appsecret_proof no Facebook, PKCE S256 no X).
Requisitos: WordPress 6.2 ou superior, WooCommerce 7.0 ou superior, PHP 8.0 ou superior. A compatibilidade com o HPOS e com os blocos de checkout do WooCommerce é declarada pelo plugin na ativação.
Instalação
- Descarregue o ficheiro ZIP do plugin a partir da sua área de cliente DataFirefly.
- No WordPress, vá a Plugins → Adicionar → Carregar plugin.
- Selecione o ZIP e clique em Instalar agora.
- Clique em Ativar. O WooCommerce tem de estar ativo no momento da ativação, caso contrário o plugin recusa instalar-se.
- Aparece um novo menu Social Connect na barra lateral de administração, com duas subpáginas: Estatísticas e Definições.
Na ativação, são criadas duas tabelas SQL: wp_dfsc_connections (contas ligadas) e wp_dfsc_events (registo de eventos para as estatísticas). As opções predefinidas são gravadas em dfsc_settings.
Configuração dos fornecedores
Cada fornecedor tem o seu próprio cartão no separador Fornecedores das definições. Em cada um, encontra no topo do cartão o URI de redirecionamento a copiar para a consola do fornecedor. É este parâmetro que autoriza o seu site a receber o retorno da autenticação.
Google (com One-Tap)
- Vá à Google Cloud Console e crie (ou selecione) um projeto.
- Em APIs & Services → OAuth consent screen, configure o ecrã de consentimento (tipo Externo numa loja pública, e acrescente o seu domínio aos domínios autorizados).
- Em Credentials → Create credentials → OAuth client ID, escolha Web application.
- Em Authorized redirect URIs, cole o URI apresentado no cartão Google do Social Connect (forma:
https://o-seu-dominio.com/?dfsc_action=callback&dfsc_provider=google). - Para ativar o Google One-Tap, acrescente também o seu domínio raiz em Authorized JavaScript origins.
- Copie o Client ID e o Client secret para os campos correspondentes do cartão Google, ative o interruptor do fornecedor, e assinale Mostrar o convite One-Tap aos visitantes sem sessão, se quiser.
O One-Tap funciona com verificação completa da assinatura JWKS e controlo das claims aud, iss e exp. A validação é criptográfica, não apenas declarativa.
Apple (Sign in with Apple)
- No Apple Developer (exige conta paga), vá a Certificates, Identifiers & Profiles → Identifiers.
- Crie um App ID com a capability Sign In with Apple ativa.
- Crie depois um Services ID (é este identificador que vai usar como «Client ID» do lado do Social Connect). Configure o seu Sign In with Apple: acrescente o seu domínio em Domains, e o URI de redirecionamento apresentado no cartão Apple em Return URLs.
- Crie uma chave privada (Keys → +), com Sign In with Apple assinalado, associada ao seu App ID. Descarregue o ficheiro
.p8(só pode descarregá-lo uma vez). - No cartão Apple, indique o Services ID, o seu Team ID (visível no canto superior direito do portal), o Key ID (apresentado ao lado da chave criada), e cole o conteúdo completo do ficheiro
.p8na área Chave privada (incluindo as linhas-----BEGIN PRIVATE KEY-----).
A Apple só devolve o nome do utilizador no primeiro consentimento, e nunca fornece fotografia de perfil. Se o utilizador ativar o «Hide My Email», é fornecido um e-mail de retransmissão da Apple, que o plugin usa normalmente. Se recusar partilhar o endereço, o plugin gera automaticamente um e-mail técnico.
- No Meta for Developers, crie uma aplicação do tipo Consumer.
- Na aplicação, acrescente o produto Facebook Login → Web.
- Nas definições do Facebook Login, acrescente o URI de redirecionamento apresentado no cartão Facebook em Valid OAuth Redirect URIs.
- Obtenha o App ID e o App Secret em Settings → Basic e cole-os no cartão Facebook.
O plugin reforça cada chamada à Graph API com o appsecret_proof (HMAC-SHA256 do token assinado com o seu App Secret), em conformidade com as boas práticas da Meta.
Microsoft
- No Microsoft Entra (antigo Azure AD), vá a App registrations → New registration.
- Dê um nome à sua aplicação. Em Supported account types, escolha Accounts in any organizational directory and personal Microsoft accounts se quiser aceitar ambos (usa o tenant
common). - Em Redirect URI, escolha Web e cole o URI apresentado no cartão Microsoft.
- Depois de criada, copie o Application (client) ID para o campo correspondente.
- Em Certificates & secrets, crie um New client secret e copie de imediato o valor (deixa de ser visível depois) para o campo Client Secret.
- Deixe o campo Tenant em
commonpara aceitar contas profissionais e pessoais, ou indique o ID do seu tenant para restringir a uma organização.
- No LinkedIn Developers, crie uma aplicação ligada à sua página de empresa.
- No separador Products, peça a ativação de Sign In with LinkedIn using OpenID Connect. A aprovação é automática.
- No separador Auth, acrescente o URI de redirecionamento apresentado no cartão LinkedIn em Authorized redirect URLs.
- Obtenha o Client ID e o Client Secret no separador Auth e cole-os no Social Connect.
X (Twitter)
- No portal de programadores do X, crie um projeto e depois uma aplicação.
- Em User authentication settings, ative o OAuth 2.0, escolha o tipo Confidential client (recomendado), e cole o URI de redirecionamento apresentado no cartão X em Callback URI / Redirect URL.
- Indique o seu Website URL (página inicial da sua loja).
- Obtenha o Client ID e o Client Secret e cole-os no Social Connect.
A API v2 do X não devolve o endereço de e-mail. O plugin gera automaticamente um endereço técnico para criar a conta WordPress correspondente. Se fizer questão de um e-mail real, o utilizador pode sempre atualizá-lo na sua área de cliente.
Posicionamento e aparência
No separador Aparência, escolhe onde apresentar os botões:
- Formulário de início de sessão do WooCommerce (página A minha conta sem sessão).
- Formulário de registo do WooCommerce.
- Página de checkout, por cima do formulário.
- Painel de A minha conta, com a lista das contas ligadas e os botões de associação manual.
Também pode inserir os botões em qualquer sítio através do shortcode:
[datafirefly_social_connect]
[datafirefly_social_connect context="login" heading="yes" providers="google,apple"]
[datafirefly_social_connect context="custom" redirect="https://o-seu-site/destino/"]
A aparência é parametrizável em quatro eixos:
- Estilo: cheio (cores da marca), contorno (fundo branco, contorno colorido), mínimo (fundo cinzento-claro).
- Forma: arredondado, pílula, quadrado.
- Disposição: empilhados ou em linha.
- Texto: «Continuar com…», «Iniciar sessão com…» ou apenas o ícone.
Painel estatístico
O painel (menu Social Connect → Estatísticas) reúne toda a atividade de início de sessão social da sua loja.
KPI e gráficos
Seletor de período no canto superior direito: 7, 30, 90 ou 365 dias. Os seis KPI apresentados cobrem:
- Inícios de sessão: total de autenticações no período.
- Registos: novas contas criadas através do início de sessão social.
- Contas ligadas (total): número acumulado de identidades sociais associadas a utilizadores.
- Encomendas atribuídas e volume de negócios atribuído: ver a secção seguinte.
- Taxa de conversão: rácio entre encomendas e inícios de sessão.
Quatro gráficos completam os KPI: uma curva de evolução no tempo por fornecedor, um donut de repartição por fornecedor, um donut de repartição por tipo de dispositivo (computador, telemóvel, tablet) e um cartão «Top de países» alimentado pela geolocalização.
Atribuição das encomendas
Cada encomenda WooCommerce feita por um utilizador que chegou através do início de sessão social é atribuída ao seu fornecedor de origem. A atribuição assenta na meta de utilizador _dfsc_registered_via e, como recurso, na primeira ligação social ativa do utilizador.
São escutados os hooks woocommerce_checkout_order_processed e woocommerce_store_api_checkout_order_processed, o que cobre tanto o checkout clássico como o checkout em blocos.
Teste A/B dos botões
No separador Aparência, ative o bloco Teste A/B dos botões e configure a variante B (estilo, forma, disposição, texto). A partir desse momento, cada visitante recebe aleatoriamente a variante A (as suas definições base) ou a variante B (cookie dfsc_ab, 50/50, conservado 30 dias).
Uma impressão é contada uma vez por sessão de visitante (cookie dfsc_ab_imp), para não inflacionar o volume. As conversões são medidas nos eventos de início de sessão, registo, ligação e encomenda, e apresentadas no cartão Teste A/B do painel, com impressões, conversões, encomendas atribuídas, taxas por variante e designação automática da variante vencedora.
Para obter um resultado estatisticamente significativo, conte com pelo menos 500 impressões por variante. Abaixo de 200, os desvios medidos são essencialmente ruído.
Antifraude: velocidade de início de sessão
No separador Privacidade, pode ativar a limitação de velocidade por endereço IP. Três limiares são configuráveis:
- Tentativas máximas: 8 por predefinição.
- Janela (minutos): 5 por predefinição.
- Duração do bloqueio (minutos): 15 por predefinição.
Depois de ultrapassado o limite, o IP fica bloqueado durante o tempo configurado. É registado um evento do tipo blocked, que aparece na atividade recente. A proteção aplica-se tanto aos redirecionamentos OAuth clássicos como ao fluxo Google One-Tap.
Independentemente disso, o plugin mantém uma lista de domínios de e-mail descartáveis (Mailinator, Yopmail, 10MinuteMail, etc.) que podem ser bloqueados no registo. A lista é extensível através do filtro dfsc_disposable_domains.
Geolocalização
Ative a geolocalização no separador Privacidade. O plugin usa a base MaxMind já incluída no WooCommerce: não é feita qualquer chamada a um serviço externo. Se ainda não tiver ativado a geolocalização do lado do WooCommerce, vá a WooCommerce → Definições → Geral e ative a opção de geolocalização por predefinição (o WooCommerce descarrega automaticamente a base de dados).
Depois de ativada, o país de cada início de sessão é resolvido e alimenta o cartão Top de países do painel e a coluna «País» da exportação CSV.
Exportação CSV
O botão Exportar em CSV no topo do painel exporta todos os eventos do período selecionado. O ficheiro inclui uma coluna para cada campo pertinente (data em UTC, evento, fornecedor, contexto, país, dispositivo, variante A/B, utilizador, encomenda, montante, mensagem). É acrescentado o BOM UTF-8 no início do ficheiro para que o Excel e o LibreOffice Calc apresentem corretamente os acentos.
Ligação de contas
Coexistem três mecanismos para ligar uma identidade social a uma conta WordPress:
- Identidade já conhecida: o utilizador já usou esse fornecedor, e o início de sessão é imediato.
- Ligação automática por e-mail: já existe um utilizador WordPress com o mesmo endereço de e-mail que o devolvido pelo fornecedor. Se o e-mail estiver verificado pelo fornecedor (e a opção E-mail verificado exigido estiver ativa), a ligação é feita automaticamente.
- Ligação manual: a partir do painel de A minha conta, um cliente com sessão iniciada pode associar ou dissociar cada fornecedor através do painel Contas ligadas.
RGPD e privacidade
Estão disponíveis três modos de armazenamento dos IP no separador Privacidade:
- Com hash (por predefinição): HMAC-SHA256 com o
wp_salt, não reversível. - Completo: IP em claro (a usar apenas se a sua política de privacidade o mencionar explicitamente).
- Nenhum: o IP não é registado de todo.
O plugin declara um exporter e um eraser junto do sistema RGPD nativo do WordPress (Ferramentas → Exportar / Apagar dados pessoais). Na eliminação de um utilizador, as suas contas ligadas e os seus eventos são também eliminados (ou anonimizados em caso de apagamento).
Shortcode e integração avançada
O shortcode [datafirefly_social_connect] aceita os seguintes atributos:
context:login,register,checkoutoucustom.heading:yesouno, para apresentar o título «Início de sessão rápido» por cima dos botões.providers: lista separada por vírgulas para limitar a apresentação (por exemplogoogle,apple).redirect: URL absoluto de redirecionamento após o início de sessão (prevalece sobre a definição global).
Também pode chamar a apresentação diretamente em PHP:
echo do_shortcode('[datafirefly_social_connect context="custom" providers="google,microsoft"]');
Hooks e filtros para programadores
dfsc_disposable_domains(filtro): estende ou substitui a lista de domínios de e-mail descartáveis.dfsc_user_registered(ação): acionada logo após a criação de uma conta através do início de sessão social, com o ID do utilizador e o perfil normalizado.dfsc_after_login(ação): acionada após cada início de sessão bem-sucedido.dfsc_welcome_subjectedfsc_welcome_body(filtros): personalizam o assunto e o corpo do e-mail de boas-vindas.dfsc_placeholder_email_domain(filtro): altera o domínio usado nos e-mails técnicos (Apple Hide My Email recusado, X).
Uma API REST apenas de leitura expõe as estatísticas agregadas em /wp-json/datafirefly-social-connect/v1/stats?days=30 (exige a permissão manage_woocommerce). Ative-a no separador Privacidade.
Compatibilidade
- WooCommerce HPOS: a compatibilidade
custom_order_tablesé declarada na ativação, e as suas encomendas em armazenamento de alto desempenho são suportadas sem reservas. - Blocos de checkout: o hook
woocommerce_store_api_checkout_order_processedé escutado em paralelo com o hook clássico, e a atribuição das encomendas funciona nos dois tipos de checkout. - Polylang e WPML: as cadeias de interface são traduzíveis através do ficheiro
.potfornecido (FR, EN, ES, DE, IT). O conteúdo (e-mail de boas-vindas, etc.) é compatível com os dois plugins multilingues. - Multisite: cada site da rede tem as suas próprias tabelas e opções. A desinstalação limpa cada site.
Desinstalação
Na remoção do plugin a partir de Plugins, o ficheiro uninstall.php é executado automaticamente. Elimina:
- As tabelas
wp_dfsc_connectionsewp_dfsc_events. - As opções
dfsc_settingsedfsc_db_version. - Os transientes associados (cache JWKS da Google, cache do client secret da Apple, tokens de estado).
- Os metadados de utilizador (
_dfsc_provider,_dfsc_registered_via,_dfsc_avatar_id, etc.).
Os seus utilizadores WordPress e as suas encomendas WooCommerce nunca são tocados. Em multisite, a desinstalação percorre todos os sites da rede.
FAQ e resolução de problemas
O botão Google mostra-me «redirect_uri_mismatch»
O URI de redirecionamento colado na Google Cloud Console não corresponde exatamente ao apresentado no cartão Google do Social Connect. Verifique que copiou mesmo o URI completo (com https://, a barra final e os parâmetros ?dfsc_action=callback&dfsc_provider=google).
A Apple devolve-me «invalid_client»
Três causas possíveis: o Services ID indicado não é um Services ID mas um App ID, o Team ID está errado, ou o conteúdo da chave privada .p8 está incompleto (linhas -----BEGIN PRIVATE KEY----- em falta). Volte a verificar os três e limpe a cache do client secret da Apple guardando de novo as definições.
O Facebook devolve-me um erro de appsecret_proof
O App Secret introduzido está incorreto ou foi regerado do lado da Meta sem ter sido atualizado aqui. Vá ao Meta for Developers, copie de novo o segredo e cole-o no cartão Facebook.
O X / Twitter devolve-me «invalid_request» no momento do retorno
O Callback URI não foi corretamente preenchido no portal de programadores do X, ou o tipo de aplicação não é Confidential client quando o Client Secret é obrigatório. Volte a verificar o portal.
O painel está vazio apesar de ter havido inícios de sessão
Verifique que o período selecionado cobre mesmo os inícios de sessão (30 dias por predefinição). Se acabou de ativar o plugin, espere ter pelo menos alguns eventos para ver os gráficos ganharem vida.
O teste A/B mostra taxas a 0%
É preciso um mínimo de impressões e de conversões para que as taxas se tornem significativas. Conte com algumas centenas de impressões por variante antes de interpretar os resultados.
A geolocalização não devolve nenhum país
Verifique que o WooCommerce descarregou mesmo a base MaxMind. Vá a WooCommerce → Definições → Geral, ative a geolocalização por predefinição e aguarde alguns minutos. A base é depois atualizada automaticamente pelo WooCommerce.
Como forçar a dissociação de uma conta do lado da administração?
Vá à tabela wp_dfsc_connections e elimine a linha correspondente. No próximo início de sessão através desse fornecedor, o utilizador é tratado como uma identidade nova (associada à sua conta WordPress por e-mail, se a ligação automática estiver ativa).