7

Ich möchte auf die mit meinem Konto verknüpften Standorte und deren Bewertungen zugreifen. Dafür verwende ich die Google My Business-API und kann darauf zugreifen oAuthplayground).Zugriff auf die Google My Business-API ohne Anmeldung (über Dienstkonto)

Jetzt möchte ich auf die Google My Business API zugreifen, ohne mich in mein Konto einzuloggen, dafür versuche ich, dass es mit dem Dienstkonto funktioniert. Aber bisher kein Glück, bitte rate weiter. Ich habe die G-Suite im Dienstkonto aktiviert und ich habe auch versucht, Zugriff auf die Dienstkonto-E-Mail (ID) für mein Unternehmen zu geben, aber es bleibt in Invited Zustand, da es keine Möglichkeit gibt, die Einladung tatsächlich zu akzeptieren .

Wenn ich versuche, Anfrage mit meinem Konto als Betreff zu senden.

$client = new Google_Client(); 
$client->addScope('https://www.googleapis.com/auth/plus.business.manage'); 
$client->setAuthConfig(dirname(__FILE__) . '/Xyz Review API-service account.json'); 
$client->setSubject('xyz*****[email protected]'); 
$business_service_class = new Google_Service_Mybusiness($client); 
$result_accounts = $business_service_class->accounts->listAccounts(); 
echo json_encode($result_accounts); 
exit; 

Antwort: { "nextpagetoken": null}

Wenn ich die Google-Dienst-Konto-ID als E-Mail-ID in Betreff verwende dann bekomme ich Antwort nach.

$client->setSubject('[email protected]'); 

Antwort: Error 500 { "Fehler": "unauthorized_client", "ERROR_DESCRIPTION": "Nicht autorisierter Client oder Umfang in Anforderung" }

Wenn ich das völlig falsch mache dann bitte Ratschläge, wie Sie damit fortfahren. Vielen Dank.

+0

Ich bin nicht wirklich sicher, ob die API mit einem Dienstkonto funktioniert, aber soweit ich verstehe, ein Dienstkonto so zu verwenden, wie Sie möchten, müssen Sie Domänenweite Delegierung aktivieren. Ich sehe, dass Google My Business als Dienst in den "anderen Google-Diensten" des G Suite-Kontos angezeigt wird. Haben Sie versucht, die Schritte unter https://developers.google.com/api-client-library/php/auth/service-accounts auszuführen? Vielleicht müssen Sie nur DWD aktivieren. Lass mich wissen ob es funktioniert. – Morfinismo

+0

@Morfinismo Ich habe den DWD im Dienstkonto aktiviert, dann habe ich nur die oben genannten API-Aufrufe versucht. – Hmmm

+0

@Hmmm hast du jemals mein Geschäft mit einem Dienstkonto arbeiten? Wenn das so ist, wie? – Zath

Antwort

1

Ich habe das Problem der Authentifizierung für meinen internen Dienst mit Google Apis konfrontiert. besteht grundsätzlich zwei Verfahren:

  1. die Seite erstellen Sie Ihre Anwendung zu akzeptieren, das Google-Kontos für den Zugriff auf
  2. ein Zertifikat erstellen, um die Anwendung mit „impliziter“ Genehmigung

zu authentifizieren, wie ich sagte, ich‘ m Verwenden der Google API für ein internes Projekt, so kommt die erste Option nicht in Frage (der Dienst ist nicht öffentlich). Gehen Sie zu https://console.cloud.google.com und erstellen Sie ein neues Projekt. Gehen Sie dann zu "api manager", dann "credentials" und erstellen Sie einen "service credential".

Wenn Sie alle diese Schritte befolgen, haben Sie ein Zertifikat mit der Erweiterung .p12, es ist Ihr Schlüssel zum Zugriff auf Google API (denken Sie daran, dass Sie den Schlüssel aktivieren müssen, um auf die gewünschte Google API zuzugreifen).

Ich füge ein Beispiel aus meinem Projekt extrahiert, ich verwende Google Kalender, aber die Authentifizierung ist für jeden Dienst identisch.

$client_email = '[email protected]'; 
    $private_key = file_get_contents(__DIR__ . '/../Resources/config/xxxx.p12'); 
    $scopes = array('https://www.googleapis.com/auth/calendar'); 
    $credentials = new \Google_Auth_AssertionCredentials(
     $client_email, 
     $scopes, 
     $private_key 
    ); 

    $this->client = new \Google_Client(); 
    $this->client->setAssertionCredentials($credentials); 
+0

Google_Auth_AssertionCredentials wurde aus der google-api-php-Version 2 entfernt. (Sie können hier nachsehen - https://github.com/google/google-api-phph-client/blob/master/UPGRADING.md) Ich habe json heruntergeladen anstelle von .p12 und die Schritte sind die gleichen immer noch irgendwie nicht funktioniert. – Hmmm

Verwandte Themen