INTRODUÇÃO
Post anterior: Dashboard de Produtividade Pessoal T1E11: BugCT1-4 Alterando para login com Google Identity Services (GIS)
O objetivo deste post é apresentar um prompt para o Gemini 2.5 Pro (Prévia), no qual é feito um pedido de fornecimento do código pronto no App Dashboard de Produtividade Pessoal (D2P), para que o login seja feito usando a nova biblioteca Google Identidy Services (GIS).
Prompt para o Gemini 2.5 Pro (Prévia)
Constatei que o código do Dashboard de Produtividade Pessoal que você fez e que eu tenho alterado, está diferente do que foi referenciado, conforme as observações abaixo.
A probabilidade de eu ter destruído o código durante as alterações é alta, porque meu conhecimento é de nível básico.
OBSERVAÇÃO 1: NO PASSO 1 NÃO ENCONTREI
<script src="https://apis.google.com/js/api.js"></script>
NEM
<script src="https://apis.google.com/js/platform.js" async defer></script>
ENCONTREI
<script async defer src=" https://apis.google.com/js/platform.js " onload="startApp()"></script>)
OBSERVAÇÃO 2: NO PASSO 2 NÃO ENCONTREI ESSE BOTÃO ANTIGO
<div class="g-signin2" data-onsuccess="onSignIn"></div>
OBSERVAÇÃO 3: NÃO ENCONTREI
function start(),
MAS ENCONTREI function startApp()
(OBSERVAÇÃO 4: NO PASSO 4 NÃO FOI ENCONTRADA
function signOut)
Peço que envie o código completo, já com as mudanças e pronto para testar.
Resposta do Gemini 2.5 Pro (Prévia)
Com certeza! Muito obrigado pelas observações detalhadas. Elas são extremamente úteis e confirmam exatamente o que precisa ser feito.
Sua análise está correta. O seu código utilizava um método um pouco diferente para iniciar o login (uma função startApp
com um botão personalizado, em vez do botão padrão do Google), mas a causa raiz do problema é a mesma: o uso da biblioteca antiga.
Não se preocupe, o código não foi destruído. Vamos apenas substituí-lo pelo novo padrão.
Abaixo está o código completo e pronto para usar. Basta copiar todo o conteúdo, colar em um arquivo (por exemplo, index.html
), adicionar sua Client ID
e testar no navegador.
Código Completo: Dashboard de Produtividade Pessoal (D2P)
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dashboard de Produtividade Pessoal (D2P)</title>
<style>
/* Estilos básicos para a página */
body {
font-family: Arial, sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #f4f4f4;
text-align: center;
}
.container {
padding: 40px;
background-color: white;
border-radius: 8px;
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
}
/* Esconde o dashboard e o botão de logout por padrão */
#dashboard, #logoutButton {
display: none;
}
h1, h2 {
color: #333;
}
p {
color: #555;
}
#logoutButton {
margin-top: 20px;
padding: 10px 20px;
border: none;
background-color: #db4437;
color: white;
border-radius: 4px;
cursor: pointer;
font-size: 16px;
}
#logoutButton:hover {
background-color: #c53727;
}
</style>
</head>
<body>
<div class="container">
<div id="loginArea">
<h1>Dashboard de Produtividade Pessoal (D2P)</h1>
<p>Faça o login com sua conta Google para continuar.</p>
<div id="g_id_onload"
data-client_id="COLE_AQUI_O_SEU_CLIENT_ID.apps.googleusercontent.com"
data-callback="handleCredentialResponse"
data-auto_prompt="false">
</div>
<div class="g_id_signin"
data-type="standard"
data-size="large"
data-theme="outline"
data-text="sign_in_with"
data-shape="rectangular"
data-logo_alignment="left">
</div>
</div>
<div id="dashboard">
<h2 id="welcomeMessage"></h2>
<p>Seu dashboard de produtividade está ativo.</p>
<p id="userInfo"></p>
<button id="logoutButton">Sair (Logout)</button>
</div>
</div>
<script src="https://accounts.google.com/gsi/client" async defer></script>
<script>
/**
* Função de callback que o Google chama após o usuário fazer login.
* Ela recebe o token do usuário como resposta.
* @param {object} response - O objeto de resposta do Google contendo o token.
*/
function handleCredentialResponse(response) {
// Decodifica o token JWT para extrair as informações do usuário
const responsePayload = jwt_decode(response.credential);
console.log("Login bem-sucedido!");
console.log("ID do Usuário: " + responsePayload.sub);
console.log('Nome Completo: ' + responsePayload.name);
console.log('E-mail: ' + responsePayload.email);
// ATUALIZA A INTERFACE
// 1. Esconde a área de login
document.getElementById('loginArea').style.display = 'none';
// 2. Mostra o dashboard
document.getElementById('dashboard').style.display = 'block';
// 3. Exibe uma mensagem de boas-vindas e os dados do usuário
document.getElementById('welcomeMessage').innerText = 'Bem-vindo(a), ' + responsePayload.name + '!';
document.getElementById('userInfo').innerText = 'Logado com o e-mail: ' + responsePayload.email;
}
/**
* Função para fazer logout.
* Ela limpa a interface e desativa o login automático do Google.
*/
function signOut() {
// Informa ao Google para não fazer login automático na próxima vez
google.accounts.id.disableAutoSelect();
// ATUALIZA A INTERFACE
// 1. Esconde o dashboard
document.getElementById('dashboard').style.display = 'none';
// 2. Mostra a área de login novamente
document.getElementById('loginArea').style.display = 'block';
console.log('Usuário desconectado.');
}
/**
* Função auxiliar para decodificar o token JWT.
* @param {string} token - O token de credencial.
* @returns {object} - O conteúdo do token como um objeto.
*/
function jwt_decode(token) {
try {
const base64Url = token.split('.')[1];
const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
const jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
}).join(''));
return JSON.parse(jsonPayload);
} catch (e) {
console.error("Erro ao decodificar o token:", e);
return null;
}
}
// Espera a página carregar para adicionar o evento ao botão de logout
window.onload = function() {
document.getElementById('logoutButton').addEventListener('click', signOut);
};
</script>
</body>
</html>
Instruções Finais
- Copie o Código: Copie todo o bloco de código acima.
- Cole em um Arquivo: Crie um novo arquivo de texto e cole o código. Salve o arquivo com o nome
index.html
. - Adicione sua Client ID: Na linha 50, onde está escrito
COLE_AQUI_O_SEU_CLIENT_ID.apps.googleusercontent.com
, substitua essa frase pela sua Client ID do Google. Este é o passo mais importante. - Teste: Abra o arquivo
index.html
em seu navegador (como Chrome ou Firefox). O novo botão de login do Google deve aparecer. Clique nele, faça o login e veja o dashboard aparecer na tela. O console do navegador (F12) não deverá mais mostrar o erroidpiframe_initialization_failed
.
Nenhum comentário:
Postar um comentário