如果您需要Google登录,最好不要存储主要身份验证。而是使用Google的ID令牌进行身份验证。以下是一个使用Google ID令牌进行身份验证的PHP示例代码:
1.首先获取用户的Google ID令牌:
$client = new Google_Client();
$client->setAuthConfig('client_secret.json');
$client->addScope(Google_Service_Oauth2::USERINFO_PROFILE);
$client->addScope(Google_Service_Oauth2::USERINFO_EMAIL);
$redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php';
$client->setRedirectUri($redirect_uri);
if (!isset($_GET['code'])) {
$auth_url = $client->createAuthUrl();
header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
} else {
$client->authenticate($_GET['code']);
$_SESSION['access_token'] = $client->getAccessToken();
$redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/';
header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
exit;
}
2.使用此令牌进行Google OAuth身份验证:
$client = new Google_Client();
$client->setAuthConfig('client_secret.json');
$client->setAccessType('offline');
$client->setApprovalPrompt('auto');
$client->setAccessToken($_SESSION['access_token']);
$token_data = $client->verifyIdToken();
$userid = $token_data['sub'];
通过这种方式,您可以使用Google ID令牌进行身份验证,而无需将用户的主要凭据存储在您的数据库中。