How to ask for the verification of code in google client api

10 views
Skip to first unread message

Prashant

unread,
Mar 23, 2022, 8:42:46 AM3/23/22
to Google APIs Discovery Service Users
Hi I am using google  api  for using for google drive. I have installed the extension through composer and can upload files to google drive. I have the below action code for managing and handling the client api. So every time if the token fails or expires or users need to authenticate the google account for accessing the api calls so every time the user has to start the command prompt, go to the required directory and enter the verification code. This is not very efficient. So how to get rid of going to command prompt and then entering the verification code in command prompt. Instead everything should happen in browser. So what change should be done in following code.

public function getClient()
{
    $client = new Google_Client();

    $client->setApplicationName('Google Drive API PHP Quickstart');
    $client->setRedirectUri('http://localhost/lwa/basic/web');

    $client->setScopes(Google_Service_Drive::DRIVE);


    $client->setAuthConfig("../credentials.json");
    $client->setAccessType('offline');
    $client->setPrompt('select_account consent');

    // Load previously authorized token from a file, if it exists.
    // The file token.json stores the user's access and refresh tokens, and is
    // created automatically when the authorization flow completes for the first
    // time.
    $tokenPath = '../token.json';
    if (file_exists($tokenPath)) {
        $accessToken = json_decode(file_get_contents($tokenPath), true);
        $client->setAccessToken($accessToken);
    }

    // If there is no previous token or it's expired.
    if ($client->isAccessTokenExpired()) {
        // Refresh the token if possible, else fetch a new one.
        if ($client->getRefreshToken()) {
            $client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
        } else {
            // Request authorization from the user.
            $authUrl = $client->createAuthUrl();
            printf("Open the following link in your browser:\n%s\n", $authUrl);
            print 'Enter verification code: ';
            $authCode = trim(fgets(STDIN));

            // Exchange authorization code for an access token.
            $accessToken = $client->fetchAccessTokenWithAuthCode($authCode);
            $client->setAccessToken($accessToken);

            // Check to see if there was an error.
            if (array_key_exists('error', $accessToken)) {
                throw new Exception(join(', ', $accessToken));
            }
        }
        // Save the token to a file.
        if (!file_exists(dirname($tokenPath))) {
            mkdir(dirname($tokenPath), 0700, true);
        }
        file_put_contents($tokenPath, json_encode($client->getAccessToken()));
    }
    return $client;
}

Reply all
Reply to author
Forward
0 new messages