Php 更新Google API V3脚本以允许使用刷新令牌

Php 更新Google API V3脚本以允许使用刷新令牌,php,oauth,google-api,Php,Oauth,Google Api,我使用的代码主要来自本教程- 我添加了行client->setAccessType(“脱机”)以便从Google接收刷新令牌,我可以从打印“来自Google的访问:”中看到该令牌$_会话['token'] 我很难理解如何使用刷新令牌来获得授权。理想情况下,我希望将此脚本更新为 -使用刷新令牌(如果可用),或 -如果不存在现有的“连接我”链接,请提供该链接 我计划最终将刷新令牌存储在一个DB中,但是为了让它最初工作,我只需要硬编码 非常感谢您的帮助 <?php set_inc

我使用的代码主要来自本教程-

我添加了行
client->setAccessType(“脱机”)
以便从Google接收刷新令牌,我可以从
打印“来自Google的访问:”中看到该令牌$_会话['token']

我很难理解如何使用刷新令牌来获得授权。理想情况下,我希望将此脚本更新为 -使用刷新令牌(如果可用),或 -如果不存在现有的“连接我”链接,请提供该链接

我计划最终将刷新令牌存储在一个DB中,但是为了让它最初工作,我只需要硬编码

非常感谢您的帮助

<?php        
set_include_path('src');
require_once 'Google/Client.php';     
require_once 'Google/Service/Calendar.php';

session_start();      
$client = new Google_Client();
    $client->setApplicationName("Client_Library_Examples");
    $client->setDeveloperKey("XXXXXXXXXXXXXXXXXXXX");  
    $client->setClientId('XXXXXXXXXXXXXXXXXXXX');
    $client->setClientSecret('XXXXXXXXXXXXXXXXXXXX');
    $client->setRedirectUri('XXXXXXXXXXXXXXXXXXXX');
    $client->setAccessType("offline");
    $client->setScopes(array('https://www.googleapis.com/auth/calendar'));

    //For loging out.
    if ($_GET['logout'] == "1") {
    unset($_SESSION['token']);
       }   

    // Step 2: The user accepted your access now you need to exchange it.
    if (isset($_GET['code'])) {
        $client->authenticate($_GET['code']);  
        $_SESSION['token'] = $client->getAccessToken();
        $redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
        header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
    }

    // Step 1:  The user has not authenticated we give them a link to login    
    if (!$client->getAccessToken() && !isset($_SESSION['token'])) {
        $authUrl = $client->createAuthUrl();
        print "<a class='login' href='$authUrl'>Connect Me!</a>";
        }        

    // Step 3: We have access we can now create our service
    if (isset($_SESSION['token'])) {
        print "<a class='logout' href='".$_SERVER['PHP_SELF']."?logout=1'>LogOut</a><br>";
        $client->setAccessToken($_SESSION['token']);   
        $service = new Google_Service_Calendar($client); 
    }
 print "<br>";

 print "Access from google: " . $_SESSION['token']; 
 print "<br><br>";
 require_once 'calendar_app.php';

?>


这可能会有所帮助,但我还没有时间亲自测试它。非常感谢,在我的搜索中错过了这一点。我查看了一些回复,我发现Strike3R在2013年2月26日5:30发布的答案是最简单的,而且效果很好。