0

Ich habe ein Problem durch die Verbindung über die Google Apiclient 2.0.0 wie über Composer installiert.Ich kann keine Verbindung mit einem Google-Dienst-Konto über PHP und Google Apiclient Alpha 2.0.0

Hier ist, was ich bisher getan:

I apiclient über Komponisten installiert.

Ich ging zu https://console.cloud.google.com/apis/credentials?my-project und navigierte zum API-Manager> Anmeldeinformationen Seite.

Ich habe Anmeldeinformationen für ein Dienstkonto erstellt und den JSON heruntergeladen. Ich habe dann den JSON auf meinen Server hochgeladen.

Ich habe Domain Wide Delegation für das Konto aktiviert, indem ich meine Dienstkonten verwaltet habe.

Ich verifizierte meinen Domain-Namen unter der Registerkarte "Domain Verification".

Als Nächstes navigierte ich zu meinem Kalender und teilte den Kalender mit der E-Mail-Adresse, die meinem Dienstkonto zugeordnet war, und gewährte Verwaltungszugriff.

Dann teilte ich meinen Kalender mit der E-Mail-Adresse des Dienstkontos.

Jetzt versuche ich die API zu verwenden, um zu verbinden und in Autorisierungsprobleme zu laufen.

$json_file = '/path/to/service-account-credentials.json'; 
$scopes = [ 
    Google_Service_Calendar::CALENDAR, 
    Google_Service_Calendar::CALENDAR_READONLY 
]; 

// create a new client and authorize 
$client = new Google_Client(); 

// set the basic information of the client 
$client->setApplicationName("Apointments"); 
$client->setSubject([email protected]); 
$client->setAccessType('offline'); 

// load the json credential file 
$client->setAuthConfig($json_file); 
$client->setScopes($scopes); 

// check to see if the token is stored in the session 
if(isset($_SESSION['service_token'])) 
{ 
    // token was stored, use it with the cilent 
    $client->setAccessToken($_SESSION['service_token']); 
} 

// test the authorization to see if it is expired 
if($client->isAccessTokenExpired()) 
{ 
    // Failed authorization, get a new token 
    $client->refreshTokenWithAssertion(); 
} 
// store the token in the session 
$_SESSION['service_token'] = $client->getAccessToken(); 

Von einem stacktrace habe ich die problematische Codezeile identifiziert werden:

$client->refreshTokenWithAssertion(); 

die eine Fehlermeldung ergibt:

Client-Fehlerreaktion [url] https://www.googleapis.com/oauth2/v4/token [ Statuscode] 401 [Grundphrase] Nicht autorisiert

Beliebig t Hi, wo bin ich hingegangen?

Vielen Dank im Voraus, Adam

Antwort

0

Die Art und Weisen Sie Konto verwenden Den Service ist nur dann gültig, der Zugriff auf Daten zu Ihrer Anwendung verwendet oder zu Ihrem Dienstkonto selbst. Da Sie auf die Daten Google Calendar zugreifen möchten, müssen Sie ein Google Apps-Domain-Administrator mit Zugriffsrechten für die Daten Ihrer Domain-Nutzer sein. Google Kalender-Daten gehören den Benutzern. Sie müssen also angeben, auf welchen Benutzer Sie zugreifen möchten.

Sie müssen authenticate der Benutzer, müssen ein Zugriffs-Token erhalten und das übergeben. Wenn Sie ein Zugriffstoken erhalten, können Sie Token-Info-passendes Zugriffstoken aufrufen, um weitere Informationen darüber zu erhalten, wem der Benutzer zugeordnet ist.

Hier ist ein Schnellstart Demo-Anwendung, verwenden Sie diese als Ihre Referenz: https://developers.google.com/+/web/samples/php

+0

Richtig, ich will nur meine eigene Rechnung auf Daten zuzugreifen. Ich möchte nicht auf die Daten eines anderen Benutzers zugreifen. Ich habe ein Administratorkonto mit einem Kalender. Ich möchte auf den Kalender meines Admin-Kontos zugreifen und die Daten bearbeiten. –

Verwandte Themen