无法从Google Oauth响应中获取refresh_token

时间:2014-09-07 10:39:16

标签: php oauth-2.0 google-api-php-client google-client

我是google客户端身份验证新手。我正在尝试使用从此处下载的这个php google客户端将文件上传到我的google驱动器https://github.com/google/google-api-php-client

public function oauth2callback(){
        set_include_path(get_include_path() . PATH_SEPARATOR . ROOT .DS. "vendors");
        require_once 'Google/Client.php';
        $client = new Google_Client();

        $client->setClientId('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
        $client->setClientSecret('xxxxxxxxxxxxxxxxx');
        $client->setRedirectUri('http://example.com/auth/oauth2callback');
        $client->setScopes(array('https://www.googleapis.com/auth/drive'));
        $client->setState('offline');
        $authUrl = $client->createAuthUrl();
        if (isset($_GET['code'])) {
                $authCode = trim($_GET['code']); 
                $accessToken = $client->authenticate($authCode);
                print_r($accessToken);
                $client->setAccessToken($accessToken);
        }
        if ($client->getAccessToken()) {
            // To do
        }else{
            $authUrl = $client->createAuthUrl();
            echo "<a href='$authUrl'>Login Now</a>";
        }
    }

在回复中,我只接受了这个

{"access_token":"ya29.eQAeXvi4c5CAGRwAAAAKr55Tljr6z_GpdfjyY0xbrD15XGikNRL-D724Hx1L_g","token_type":"Bearer","expires_in":3600,"created":1410085058}

没有任何刷新令牌。

我只想从响应中获取刷新令牌供以后使用。

我也跟着this question

将状态设置为离线,撤消属于此应用的所有先前访问权限, 甚至尝试过新的帐户/应用..但从未收到刷新令牌..

请大家帮帮我......

1 个答案:

答案 0 :(得分:1)

我错过了access_type = offline ..

所以,添加

$client->setAccessType('offline');

修复了问题。