164 Membres en ligne
Toutes les questions / réponses relatives à la validation d’un établissement sur Google My Business
Guidez moi
star_border
Répondre

Accès au établissement VIA l'API en PHP

Étudiant ✭

Bonjour,

 

j'essaye d'accéder/modifier mes établissements via l'API grâce à la librairie en PHP.

Pour cela j'ai créé des identifiants.

J'ai créé un compte de services et activer la délégation Google Apps au niveau du domaine. J'ai récupérer le p12 (je ne peux pas utiliser de json car je ne peux pas mettre à jour la librairie étant donné que d'autre outils l'utilise).

Je me connecte en PHP et quand j'essaye de récupérer la liste des comptes il ne récupère pas le nom du compte comme sur le lien de test (https://developers.google.com/oauthplayground/ )

["accounts"]=>
    array(1) {
      [0]=>
      array(3) {
        ["name"]=>
        string(30) "accounts/116061266527158966835"
        ["type"]=>
        string(8) "PERSONAL"
        ["state"]=>
        array(1) {
          ["status"]=>
          string(10) "UNVERIFIED"
        }
      }
    }

 

J'utilise le lien https://developers.google.com/oauthplayground/ pour tester et je récupère bien mes établissements en utilise une autorisation de type Application Web

{
 
"accounts": [
   
{
     
"state": {
       
"status": "UNVERIFIED"
     
},
     
"type": "PERSONAL",
     
"name": "accounts/106945445877679377008",
     
"accountName": "Back Office"
   
}
 
]
}

 

De plus l'id du compte récupéré est différent entre l'autorisation application web et celle client de compte de service alors que je suis sur le même projet, pour quel raison ? 

 

Merci.

Réponses des expertsverified_user
1 SOLUTION APPROUVÉE

Solutions approuvées
Message signalé comme meilleure réponse.
Solution
Accepté par l'auteur du sujet Back O
septembre 2016

Re : Accès au établissement VIA l'API en PHP

Étudiant ✭

Bonjour,

 

finalement je suis passé par l'authentification via une autorisation Application Web (l'autorisation Client de compte de service me connectant sur un autre compte). (Ne pas oublier dans la configuration de l'ID Client OAuth 2.0  d'autoriser l'URL de la page de l'utilisation du script)

Voici le code pour se connecter si jamais cela intéresse quelque'un :

 

$scope = 'https://www.googleapis.com/auth/plus.business.manage';
$client = new Google_Client();
            $client->setApplicationName("Wshop Google MyBusiness Application");
            $client->setClientId(ACCOUNT_MAIL_MYBUSINESS);
            $client->setClientSecret(ACCOUNT_SECRET_MYBUSINESS);
            $client->setScopes($scope);
            $client->setAuthConfigFile(config/' . ACCOUNT_KEY_MYBUSINESS);
            $client->setRedirectUri('http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
            
            // For retrieving the refresh token
            $client->setAccessType("offline");
            $client->setApprovalPrompt("auto"); // On valide automatiquement l'autorisation

            // Si on a pas le code d'authorisation on va le charger
            if ( !isset($_GET['code']) ) {
                // Recuperation de l'url pour obtenir le code d'authorisation
                $auth_url = $client->createAuthUrl();
                // Suppression de la session
                unset($_SESSION['access_token']);
// Nous redirige vers notre page avec en parametre GET le code d'authrorisation
                header('Location: ' . $auth_url);
                return;
            }

            // Si on a pas deja de token (utile pour les tests (rafraichissement de la page))
            if ( empty($_SESSION['access_token']) ) {
                // Maintenant avec le code on va générer un token
                $accessToken = $client->authenticate($_GET['code']);

                // En enregistre le token récupéré
                $_SESSION['access_token'] = $accessToken;
            }

            // On definie le token d'acces pour le client
            $client->setAccessToken($_SESSION['access_token']);

            if ($client->isAccessTokenExpired()) {
                $client->refreshToken($client->getRefreshToken());
            }

            $GObject = new Google_Service_MyBusiness($client);

 

Voir la solution dans l'envoi d'origine

Re : Accès au établissement VIA l'API en PHP

Étudiant ✭
Bonjour,

en clair pourquoi lorsque je passe avec une authentification Application web via https://developers.google.com/oauthplayground j'arrive à charger mon établissement mais en passant via un Client de compte de service (en utilisant la librairie PHP (j'ai installer la dernière version pour tester et j'ai le même problème) il ne me récupère pas mon établissement alors que je suis sur le même projet.

Re : Accès au établissement VIA l'API en PHP

Top Contributeur
Bonjour,

Allez plutot sur le forum developpeur pour ce souci technique : https://www.en.advertisercommunity.com/t5/Google-My-Business-API/bd-p/gmb-api#
Maurice Largeron
Certifié Adwords/Analytics
Message signalé comme meilleure réponse.
Solution
Accepté par l'auteur du sujet Back O
septembre 2016

Re : Accès au établissement VIA l'API en PHP

Étudiant ✭

Bonjour,

 

finalement je suis passé par l'authentification via une autorisation Application Web (l'autorisation Client de compte de service me connectant sur un autre compte). (Ne pas oublier dans la configuration de l'ID Client OAuth 2.0  d'autoriser l'URL de la page de l'utilisation du script)

Voici le code pour se connecter si jamais cela intéresse quelque'un :

 

$scope = 'https://www.googleapis.com/auth/plus.business.manage';
$client = new Google_Client();
            $client->setApplicationName("Wshop Google MyBusiness Application");
            $client->setClientId(ACCOUNT_MAIL_MYBUSINESS);
            $client->setClientSecret(ACCOUNT_SECRET_MYBUSINESS);
            $client->setScopes($scope);
            $client->setAuthConfigFile(config/' . ACCOUNT_KEY_MYBUSINESS);
            $client->setRedirectUri('http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
            
            // For retrieving the refresh token
            $client->setAccessType("offline");
            $client->setApprovalPrompt("auto"); // On valide automatiquement l'autorisation

            // Si on a pas le code d'authorisation on va le charger
            if ( !isset($_GET['code']) ) {
                // Recuperation de l'url pour obtenir le code d'authorisation
                $auth_url = $client->createAuthUrl();
                // Suppression de la session
                unset($_SESSION['access_token']);
// Nous redirige vers notre page avec en parametre GET le code d'authrorisation
                header('Location: ' . $auth_url);
                return;
            }

            // Si on a pas deja de token (utile pour les tests (rafraichissement de la page))
            if ( empty($_SESSION['access_token']) ) {
                // Maintenant avec le code on va générer un token
                $accessToken = $client->authenticate($_GET['code']);

                // En enregistre le token récupéré
                $_SESSION['access_token'] = $accessToken;
            }

            // On definie le token d'acces pour le client
            $client->setAccessToken($_SESSION['access_token']);

            if ($client->isAccessTokenExpired()) {
                $client->refreshToken($client->getRefreshToken());
            }

            $GObject = new Google_Service_MyBusiness($client);