Para que serve?
Esta configuração permite ao desenvolvedor obter os dados do usuário, simplificando assim o processo de cadastro e, consequentemente, aumentando a conversão geral para conectar o aplicativo.
Como Habilitar?
Na Conta Pessoal do desenvolvedor, no modo de edição do aplicativo, vá em “Configurações de desenvolvimento”. Marque a caixa de seleção “Transferir dados do usuário ao conectar a integração”. Enquanto a caixa de seleção não estiver marcada, os dados não serão transmitidos por padrão.
Como os dados são transferidos
Ao clicar no botão “Conectar” no Marketplace, você segue o link “Url de redirecionamento de registro” especificado na conta pessoal do parceiro. Os parâmetros user_data
e user_data_sign
são aplicados a este link pelo parâmetro GET, além do parâmetro já existente salon_id.
Quando a configuração está desabilitada, a conexão de integração ocorre conforme o fluxo normal.
Como os dados são gerados
user_data
é um arquivo em JSON codificado com o algoritmo base64.
user_data_sign
é uma assinatura que recomendamos fortemente verificar para evitar registros indesejados de terceiros. É gerado pela criptografia SHA-256 do JSON decodificado (user_data)
com seu token de parceiro (localizado no menu “Configurações da conta”).
Abaixo está um exemplo de descriptografia de dados em PHP:
<?php
const PARTNER_TOKEN = '2t6u73mrh85btb8wgyfj';
$userData = $_GET['user_data'];
// String eyJ1c2VyX2lkIjoxMjMsIm5hbWUiOiLQkNC90LTRgNC10Lkg0JjQstCw0L3QvtCyIiwiZW1haWwiOiJhbmRyZXlAZXhhbXBsZS5jb20iLCJwaG9uZSI6Ijc5OTkwMDA5OTAwIn0=
// Etapa 1 - decodificar base64
$userData = base64_decode($userData);
var_dump($userData);
/**
* Após a decodificação, obtemos um array com informações sobre o usuário
*array(4) {
* ["user_id"] => int(123)
* ["name"] => string(25) "Alex Smith"
* ["email"] => string(18) "alexsmith@example.com"
* ["phone"] => string(11) "19990009900"
*}
*/
//Etapa 2 - verifique a validade da assinatura
$isSignValid = $_GET['user_data_sign'] === hash_hmac('sha256', $userData, PARTNER_TOKEN);
if (!$isSignValid) {
die("Invalid sign!");
Comentários