solucionar solucion redirect_uri_mismatch playground google error developers developer como auth redirect oauth google-analytics oauth-2.0 uri

redirect - solucion - google oauth demo



Google Analytics OAuth2: cómo resolver el error: "redirect_uri_mismatch"? (3)

El URI de redireccionamiento en la solicitud DEBE ser exactamente el mismo que un URI que almacenaste.

Veo una / al final de la almacenada que omitió en su solicitud.

Estoy intentando que este ejemplo funcione: https://developers.google.com/analytics/devguides/config/mgmt/v3/quickstart/web-php#enable

El error que obtengo es "Error: redirect_uri_mismatch".

Para instalar los recursos de google api, utilicé el compositor con este comando:

php composer.phar require google/apiclient:^2.0.0@RC

Esto instaló la carpeta "proveedor" en mi carpeta de sitio raíz. Mis archivos index.php y oauth2callback.php se encuentran en la carpeta "public_html".

Aquí hay una captura de pantalla de mi error cuando voy a mi sitio:

Lo extraño es que si navego hasta el enlace de arriba que está incluido en el mensaje de error "Visita ...... para actualizar el ... autorizado", aparece este mensaje de error: "El cliente OAuth no existe"

Si hago clic en mi única ID de cliente disponible, puedo navegar para ver la URI que también mostraré a continuación:

Como puede ver, en orígenes de Javascript autorizado, he enumerado http: // localhost , y bajo URI de redirección autorizada, tengo mi sitio en vivo seguido de la extensión de archivo "oauthc2callback.php".

No entiendo cómo deshacerme del error que estoy recibiendo. He intentado reemplazar los URI y poner diferentes orígenes de JavaScript.

Además, por alguna razón en la última captura de pantalla, dice que no tengo permiso para editar este cliente de OAuth, pero puedo hacer modificaciones.

El código que tengo para index.php:

<?php // Load the Google API PHP Client Library. require_once ''../vendor/autoload.php''; // Start a session to persist credentials. session_start(); // Create the client object and set the authorization configuration // from the client_secretes.json you downloaded from the developer console. $client = new Google_Client(); $client->setAuthConfigFile(''../config/client_secrets.json''); $client->addScope(''https://www.googleapis.com/auth/analytics.readonly''); // If the user has already authorized this app then get an access token // else redirect to ask the user to authorize access to Google Analytics. if (isset($_SESSION[''access_token'']) && $_SESSION[''access_token'']) { // Set the access token on the client. $client->setAccessToken($_SESSION[''access_token'']); // Create an authorized analytics service object. $analytics = new Google_Service_Analytics($client); // Get the first view (profile) id for the authorized user. $profile = getFirstProfileId($analytics); // Get the results from the Core Reporting API and print the results. $results = getResults($analytics, $profile); printResults($results); } else { $redirect_uri = ''http://'' . $_SERVER[''HTTP_HOST''] . ''/oauth2callback.php''; header(''Location: '' . filter_var($redirect_uri, FILTER_SANITIZE_URL)); } function getFirstprofileId(&$analytics) { // Get the user''s first view (profile) ID. // Get the list of accounts for the authorized user. $accounts = $analytics->management_accounts->listManagementAccounts(); if (count($accounts->getItems()) > 0) { $items = $accounts->getItems(); $firstAccountId = $items[0]->getId(); // Get the list of properties for the authorized user. $properties = $analytics->management_webproperties ->listManagementWebproperties($firstAccountId); if (count($properties->getItems()) > 0) { $items = $properties->getItems(); $firstPropertyId = $items[0]->getId(); // Get the list of views (profiles) for the authorized user. $profiles = $analytics->management_profiles ->listManagementProfiles($firstAccountId, $firstPropertyId); if (count($profiles->getItems()) > 0) { $items = $profiles->getItems(); // Return the first view (profile) ID. return $items[0]->getId(); } else { throw new Exception(''No views (profiles) found for this user.''); } } else { throw new Exception(''No properties found for this user.''); } } else { throw new Exception(''No accounts found for this user.''); } } function getResults(&$analytics, $profileId) { // Calls the Core Reporting API and queries for the number of sessions // for the last seven days. return $analytics->data_ga->get( ''ga:'' . $profileId, ''7daysAgo'', ''today'', ''ga:sessions''); } function printResults(&$results) { // Parses the response from the Core Reporting API and prints // the profile name and total sessions. if (count($results->getRows()) > 0) { // Get the profile name. $profileName = $results->getProfileInfo()->getProfileName(); // Get the entry for the first entry in the first row. $rows = $results->getRows(); $sessions = $rows[0][0]; // Print the results. print "<p>First view (profile) found: $profileName</p>"; print "<p>Total sessions: $sessions</p>"; } else { print "<p>No results found.</p>"; } }

El código que tengo para "oauth2callback.php":

<?php require_once ''../vendor/autoload.php''; // Start a session to persist credentials. session_start(); // Create the client object and set the authorization configuration // from the client_secrets.json you downloaded from the Developers Console. $client = new Google_Client(); $client->setAuthConfigFile(''../config/client_secrets.json''); $client->setRedirectUri(''http://'' . $_SERVER[''HTTP_HOST''] . ''/oauth2callback.php''); $client->addScope(''https://www.googleapis.com/auth/analytics.readonly''); // Handle authorization flow from the server. 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(); $redirect_uri = ''http://'' . $_SERVER[''HTTP_HOST''] . ''/''; header(''Location: '' . filter_var($redirect_uri, FILTER_SANITIZE_URL)); }

Todo este código fue tomado del primer ejemplo del sitio web, excepto con algunas adiciones menores para que coincida con mi sistema.

¿Alguien sabe cómo puedo deshacerme de este error? ¿Qué estoy haciendo mal?


Recuerde que, en lo que respecta a Google, "su" servidor es hostil hasta que lo denomine "amigable", debe incluir explícitamente en la lista blanca cada fuente posible de una llamada de OAuth a Google.

Google es un fanático del club, un gorila grande, feo e inamovible con una lista de invitados que le dice a su aplicación: "Solo trataré con su solicitud si su nombre exacto o ID está en la lista".

¿Has intentado incluir, no solo localhost , sino todos los demás orígenes posibles?

Debe enumerar todas las variaciones posibles de la "raíz" de la URL, incluidas las IP explícitas.

http://www.example.com http://example.com https://example.com https://www.example.com http://222.111.0.111 ...

no te olvides de incluir

https://accounts.google.com:443


solo copie el URI de solicitud en el que se está produciendo el error desde la pantalla de error y péguelo en las credenciales de OAuth "URI de redirección autorizada"

ahora ejecuta la aplicación. esto funciona para mi Espero haber respondido tu consulta.