Título: error al crear token en la api de google drive
Publicado por: yoelrodguez en 27 Mayo 2021, 21:07 pm
Hola a todos, estoy presentando este error, cuando trato de crear el token de mi api de gloogle drive : Error: 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ódigofunction 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
Título: Re: error al crear token en la api de google drive
Publicado por: #!drvy en 28 Mayo 2021, 08:27 am
Todas las APIs de tipo oAuth necesitan un "redirect url" que es la URL a la que redirigirán al usuario una vez este termine de autentificarse. $client->setRedirectUri('aquí url de tu host y un archivo donde leas datos');
A esa URL recibirás el código auth (vía el parametro GET code) que puedes convertir a toekn con el que realizar acciones en Drive, if (isset($_GET['code'])) { $token = $client->fetchAccessTokenWithAuthCode($_GET['code']); }
Saludos
Título: Re: error al crear token en la api de google drive
Publicado por: yoelrodguez en 2 Junio 2021, 00:52 am
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: 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
Título: Re: error al crear token en la api de google drive
Publicado por: Xyzed en 3 Junio 2021, 11:26 am
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: Server Error 403 Forbidden You do not have permission to access this document.
Hola. Al indicar que en local te funciona bien, y que el error es el HTTP: 403 en el servidor de producción, es más que seguro que los privilegios/permisos del archivo estén causando que no puedas acceder al mismo. Tendrías que revisar los privilegios de la carpeta/archivo y posteriormente htaccess si es que tienes alguna regla definida. El error 403 justamente es causado por eso, jerarquías de los archivos, permisos mal definidos. Saludos.
|