Php Google oauth 2.0-我需要刷新令牌吗?
在我的网页上,我有一个简单的登录系统(PHP)。您提供了邮件和密码、系统创建会话,并已登录 我想添加使用google oAuth 2.0登录的选项 我创建了index.php文件:Php Google oauth 2.0-我需要刷新令牌吗?,php,google-oauth,Php,Google Oauth,在我的网页上,我有一个简单的登录系统(PHP)。您提供了邮件和密码、系统创建会话,并已登录 我想添加使用google oAuth 2.0登录的选项 我创建了index.php文件: require_once("vendor/autoload.php"); $client = new Google_Client(); $client->addScope(array('https://www.googleapis.com/auth/userinfo.email','https://www.go
require_once("vendor/autoload.php");
$client = new Google_Client();
$client->addScope(array('https://www.googleapis.com/auth/userinfo.email','https://www.googleapis.com/auth/userinfo.profile'));
$redirect_uri = '/login.php';
$client->setRedirectUri($redirect_uri);
<a href="<?=$client->createAuthUrl()?>">LOGIN WITH GOOGLE</a>
if(isset($_GET['code'])) {
try {
$token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
}catch (Exception $e){
//redirect to login.php - invalid login
exit();
}
try {
$pay_load = $client->verifyIdToken();
}catch (Exception $e) {
//redirect to login.php - invalid login
exit();
}
//NOW I KNOW USER IS VALID,
//create my own _SESSION and redirect to index.php as logged user (i will use mail and name of user from google).
// i am managing _SESSION so if user logOut i will just destroy session, or will be destroyed after few minutes of inactivity
}
这个方法好吗
我需要使用吗
setAccessToken($token);
verifyIdToken();
谢谢您的回答。如果这里的主要问题是“我需要刷新令牌吗?”答案是。。。访问令牌将过期。一旦到期,您将有两个选择:
刷新令牌的唯一目的是在到期后获得新的访问令牌,而无需将用户重定向到google并再次返回。如果您不介意这样做,或者如果您只需要短时间访问他们的帐户,那么您就不需要使用刷新令牌。我认为您没有理解授权和身份验证之间的区别
Oauth2授予您访问用户数据的权限。数据由访问令牌和刷新令牌表示。
refresh令牌允许您在用户脱机时通过请求新的访问令牌访问用户数据。使用Oauth2并不能证明正在进行的调用背后有用户
OpenId connect Authenticates是一个用户登录并使用登录名和密码或google登录名验证该用户。
这由Id令牌表示。在打开id连接的登录之后,始终会有实际用户
在我的网页上,我有一个简单的登录系统(PHP)。您提供了邮件和密码、系统创建会话,并已登录
如果您使用的是登录系统,那么您应该使用openid connect,当用户脱机时,它实际上不需要刷新令牌来访问用户数据。用户将始终出现在登录系统中。谢谢您的回答。我只需要20分钟,在oAuth中过期的时间是60分钟,所以这就足够了代码>我添加
$client->setAccessToken($token['access\u token'])然后我可以使用函数$google\u data=newgoogle\u Service\u Oauth2($client)
以获取用户数据。是这样吗?