Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Google oauth 2.0-我需要刷新令牌吗?_Php_Google Oauth - Fatal编程技术网

Php Google oauth 2.0-我需要刷新令牌吗?

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

在我的网页上,我有一个简单的登录系统(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.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)
    以获取用户数据。是这样吗?