error al crear token en la api de google drive

Iniciado por yoelrodguez, Mayo 27, 2021, 04:12:12 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Mayo 27, 2021, 04:12:12 PM Ultima modificación: Junio 01, 2021, 08:10:32 PM por DtxdF
Hola a todos, estoy presentando este error, cuando trato de crear el token de mi api de gloogle drive :

Error:
Código: php
PHP Fatal error:  Uncaught InvalidArgumentException: missing the required redirect URI in /var/www/vhosts/abcmultimedia.mx/cuadernos.abcmultimedia.mx/lib/gdriver/vendor/google/auth/src/OAuth2.php:675
Stack trace:
#0 /var/www/vhosts/abcmultimedia.mx/cuadernos.abcmultimedia.mx/lib/gdriver/vendor/google/apiclient/src/Client.php(396): Google\Auth\OAuth2->buildFullAuthorizationUri(Array)
#1 /var/www/vhosts/abcmultimedia.mx/cuadernos.abcmultimedia.mx/lib/gdriver/uploaddriver.php(36): Google\Client->createAuthUrl()
#2 /var/www/vhosts/abcmultimedia.mx/cuadernos.abcmultimedia.mx/lib/gdriver/uploaddriver.php(60): getClient()
#3 {main}
  thrown in /var/www/vhosts/abcmultimedia.mx/cuadernos.abcmultimedia.mx/lib/gdriver/vendor/google/auth/src/OAuth2.php on line 675


Código

Código: php
function getClient()
{
    $client = new Google_Client();
    $client->setApplicationName('Google Drive API PHP Quickstart');
    $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.
    $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;
}


La ejecución del script, la estoy haciendo desde la linea de comando.

Gracias

Hola @yoelrodguez

Creo que le hace falta:

Código: php
// Your redirect URI can be any registered URI, but in this example
// we redirect back to this same page
$redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
$client->setRedirectUri($redirect_uri);


Fuente: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

~ DtxdF
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF

Mayo 27, 2021, 11:44:24 PM #2 Ultima modificación: Mayo 28, 2021, 01:42:20 PM por yoelrodguez
Muchas gracias por la respuesta. Ya coloque y si ya tengo el código de generación del token pero cuando le doy generar me envía el siguiente error:

Código: text
Error 400: redirect_uri_mismatch
The redirect URI in the request, http://cuadernos.abcmultimedia.mx/index.php, does not match the ones authorized for the OAuth client. To update the authorized redirect URIs, visit: https://console.developers.google.com/apis/credentials/oauthclient/586532968270-kv4shhltse4urcaqd86tin655seem08r.apps.googleusercontent.com?project=586532968270


Tengo definida la uri en el proyecto de google  You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Gracias

Hola buenas tardes, gracias por la respuesta. Coloque el proyecto en mi servidor local y sin problema me trabaja pero cuando lo coloco en el servidor en de producción me produce el siguiente error:

Código: text


Server Error
403
Forbidden
You do not have permission to access this document.



Este error se me esta produciendo cuando me hace la redirección a la página oauth2callback.php que la tengo junto al index.php en la raíz del sitio.

Gracias

@yoelrodguez

¿El error es de la API o del servidor en producción?

Recuerde que es Google... vea si no hay alguna información por ahí para saber el porqué.

~ DtxdF
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF

El error se me esta, en el servidor de producción que es un plesk. Esa misma configuración en el servidor local esta sin problema.
Gracias