I want to upload files to Google Drive using the API, but I need to do this using a cron job (autobackup of webfiles+sql to Google drive).
That means (I suppose) that I need to authenticate using something else than the user interaction method.
The example that I have been using: https://developers.google.com/api-client-library/php/auth/web-app to get me going, and its working with user authenticating.
I would appreciate some tips on how to do this without user interaction, so it can run on a cronjob.
Here are the PHP code for authenticate and upload file (working example with manual user auth and single file upload)
  <?php
    require_once 'google-api-php-client/vendor/autoload.php';
    /* Config */
    $servername = 'content here';
    $redirect_uri = 'https://example.com/';
    $client = new Google_Client();
    $client->setAuthConfig('client_manual_authentiation.json');
    $client->addScope(Google_Service_Drive::DRIVE);
    if(isset($_SESSION['access_token']) && $_SESSION['access_token']) {
        $client->setAccessToken($_SESSION['access_token']);
        $drive = new Google_Service_Drive($client);
        foreach($drive->files->listFiles(array("q" => "name = '{$servername}'"))->getFiles() as $key => $element){
            if($element->name == $servername){
                //create todays folder on Google Drive
                $today_folder_meta = new Google_Service_Drive_DriveFile(array(
                    'name' => 'myfile.txt',
                    'mimeType' => 'application/vnd.google-apps.folder',
                    'parents' => array($element['id'])
                ));
                $today_folder = $drive->files->create($today_folder_meta, array(
                    'fields' => 'id'
                ));
            }
        }
    }else{
        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();
            header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
        }
    }
?>
 
     
    