7

Chcę uzyskać dostęp do lokalizacji powiązanych z moim kontem i ich recenzjami, ponieważ korzystam z interfejsu Google go business API i mam do niego dostęp (działa on oAuthplayground).Uzyskiwanie dostępu do interfejsu Google Moja Firma API bez logowania (przy użyciu konta usługi)

Teraz chcę uzyskać dostęp do aplikacji Google my business api bez logowania się na moje konto, ponieważ staram się, aby działało z kontem usługi. Ale do tej pory nie ma szczęścia, proszę doradzić, jak postępować z tym. Mam włączone konto G Suite na koncie usługi i próbowałem również udostępnić adres e-mail (identyfikator) konta usługi dla mojej firmy zarządzającej, ale pozostaje ono w stanie Zaproszone stan, ponieważ nie ma możliwości zaakceptowania zaproszenia .

Kiedy próbuję wysłać żądanie przy użyciu mojego konta jako tematu.

$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; 

Response: { "nextPageToken": null}

Jeśli używam konta usługi Google jako identyfikator id e-mail w obiekt, a następnie dostaję następującą odpowiedź.

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

Response: Błąd 500 { "error": "unauthorized_client", "ERROR_DESCRIPTION": "Nieautoryzowane klient lub zakres we wniosku" }

Jeśli robię to zupełnie nie tak, proszę doradzić jak postępować z tym. Dziękuję Ci.

+0

Nie jestem do końca pewien, czy interfejs API będzie działał z kontem usługi, jednak z tego, co rozumiem, aby korzystać z konta usługi zgodnie z oczekiwaniami, należy włączyć delegowanie domeny. Widzę, że Google Moja Firma pojawia się jako usługa zawarta w "Inne usługi Google" konta G Suite. Czy próbowałeś wykonać te czynności tutaj: https://developers.google.com/api-client-library/php/auth/service-accounts? Może wystarczy włączyć DWD. Daj znać czy działa. – Morfinismo

+0

@Morfinismo Udało mi się włączyć DWD na koncie usługi, a następnie wypróbowałem tylko połączenia api powyżej. – Hmmm

+0

@ Hmmm czy kiedykolwiek uzyskałeś api mojej firmy współpracujące z kontem usługi? Jeśli tak to jak? – Zath

Odpowiedz

1

Napotkałem problem uwierzytelnienia dla mojej wewnętrznej usługi za pomocą Google Apis. Zasadniczo istnieją dwie metody:

  1. utworzyć stronę, aby zaakceptować aplikacji na dostęp do konta google
  2. utworzyć certyfikat uwierzytelnienia aplikacji z „niejawny” zatwierdzenia

jak powiedziałem, że” m za pomocą aplikacji Google api do projektu wewnętrznego, więc pierwsza opcja nie wchodzi w grę (usługa nie jest publiczna). Przejdź do https://console.cloud.google.com i utwórz nowy projekt, a następnie przejdź do "Menedżera api", a następnie "poświadczenia", a następnie utwórz "poświadczenie usługi".

Jeśli wykonasz wszystkie te kroki, masz certyfikat z rozszerzeniem .p12, to jest twój klucz do dostępu do google api (pamiętaj, że musisz włączyć klucz, aby uzyskać dostęp do określonego apletu Google, który chcesz).

Wklejam przykład wyodrębniony z mojego projektu, korzystam z kalendarza google, ale uwierzytelnienie jest takie samo dla każdej usługi.

$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_AservicesCredentials jest usuwany z wersji google-api -php 2. (Możesz sprawdzić tutaj - https://github.com/google/google-api-php-client/blob/master/UPGRADING.md) Pobrałem json zamiast .p12 i kroki są takie same nadal nie działają. – Hmmm