Eu tenho um sistema em CakePHP que realiza o login com uma conta do Google e em seguida retorna para a página inicial. A página www.mysite.com/login/google identifica que o parâmetro code não tem um valor e redireciona para a página de login do Google, o que está correto. No entanto, quando ele confirma o login e redireciona para www.mysite.com/login/google?code=1234, o sistema não reconhece que o parâmetro code possui valor e redireciona novamente para a página de login do Google. Abaixo está o código do controller:
namespace App\Controller;
use App\Controller\AppController;
use Cake\Http\Client;
use Cake\Http\ServerRequest;
use App\Model\Table\TusuarioTable;
use Cake\ORM\TableRegistry;
class GoogleLoginController extends AppController
{
public function login($code_id = null)
{
$this->request->allowMethod(['get','post', 'put']);
// Configurações do Google OAuth
$google_oauth_client_id = '968-hufqt7bpp16tsmbd8qoal5posu38o9g9.apps.googleusercontent.com';
$google_oauth_client_secret = 'GOCSU_zuK';
$google_oauth_redirect_uri = 'https://sistemasweb.com/login/google';
$google_oauth_version = 'v3';
$code_id = $this->request->getQuery('code');
//var_dump($_GET); exit;
// Se o código de autorização estiver presente na URL
if (isset($code_id)) {
// Executar solicitação para obter o token de acesso
echo "CODE: ".$code_id; exit;
} else {
// Redirecionar para a página de autorização do Google
$params = [
'response_type' => 'code',
'client_id' => $google_oauth_client_id,
'redirect_uri' => $google_oauth_redirect_uri,
'scope' => 'https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile',
'access_type' => 'offline',
'prompt' => 'consent'
];
return $this->redirect('https://accounts.google.com/o/oauth2/auth?' . http_build_query($params));
}
}
public function logout()
{
$this->request->getSession()->delete('google_loggedin');
$this->request->getSession()->delete('google_email');
$this->request->getSession()->delete('google_name');
$this->request->getSession()->delete('google_picture');
// Redirecionar para a página de login ou outra página relevante
return $this->redirect(['controller' => 'Pages', 'action' => 'home']);
}
}
Pergunta
Kafury Pael
Eu tenho um sistema em CakePHP que realiza o login com uma conta do Google e em seguida retorna para a página inicial. A página www.mysite.com/login/google identifica que o parâmetro code não tem um valor e redireciona para a página de login do Google, o que está correto. No entanto, quando ele confirma o login e redireciona para www.mysite.com/login/google?code=1234, o sistema não reconhece que o parâmetro code possui valor e redireciona novamente para a página de login do Google. Abaixo está o código do controller:
namespace App\Controller; use App\Controller\AppController; use Cake\Http\Client; use Cake\Http\ServerRequest; use App\Model\Table\TusuarioTable; use Cake\ORM\TableRegistry; class GoogleLoginController extends AppController { public function login($code_id = null) { $this->request->allowMethod(['get','post', 'put']); // Configurações do Google OAuth $google_oauth_client_id = '968-hufqt7bpp16tsmbd8qoal5posu38o9g9.apps.googleusercontent.com'; $google_oauth_client_secret = 'GOCSU_zuK'; $google_oauth_redirect_uri = 'https://sistemasweb.com/login/google'; $google_oauth_version = 'v3'; $code_id = $this->request->getQuery('code'); //var_dump($_GET); exit; // Se o código de autorização estiver presente na URL if (isset($code_id)) { // Executar solicitação para obter o token de acesso echo "CODE: ".$code_id; exit; } else { // Redirecionar para a página de autorização do Google $params = [ 'response_type' => 'code', 'client_id' => $google_oauth_client_id, 'redirect_uri' => $google_oauth_redirect_uri, 'scope' => 'https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile', 'access_type' => 'offline', 'prompt' => 'consent' ]; return $this->redirect('https://accounts.google.com/o/oauth2/auth?' . http_build_query($params)); } } public function logout() { $this->request->getSession()->delete('google_loggedin'); $this->request->getSession()->delete('google_email'); $this->request->getSession()->delete('google_name'); $this->request->getSession()->delete('google_picture'); // Redirecionar para a página de login ou outra página relevante return $this->redirect(['controller' => 'Pages', 'action' => 'home']); } }
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.