Ich habe seit Tagen gesucht und versuchen, neue und ältere Version von Google-API-Client zusammen mit verschiedenen anderen Beispielen da draußen, aber ich kann diesen Fehler nicht umgehen. Der folgende Code ist das Beispiel des Dienstkontos, das von GitHub abgerufen wurde, und ich habe meine Anmeldeinformationen und die Datei von der API-Konsole gelöscht. Ich habe eine andere Datei, die ich gerade erstelle, aber für diese Frage wäre diese einfachere Datei einfacher zu diskutieren. Ich bekomme den gleichen Fehler mit beiden Dateien.Getting "Nicht in der Lage, die P12-Datei zu analysieren ..." Fehler mit Google-API-Client
Ich bin völlig ratlos darüber, warum es diesen Fehler wirft.
Ich habe verifiziert "file_get_contents" erhält tatsächlich den Inhalt der Datei und mein "notasecret" Passwort wird richtig gezogen. Ich habe gehofft this recent commit könnte helfen, aber leider hat es diesen Fehler für mich nicht gelöst.
Irgendeine Idee, was hier falsch läuft? Danke für Anregungen!
<?php
session_start();
include_once "templates/base.php";
set_include_path("../src/" . PATH_SEPARATOR . get_include_path());
require_once 'Google/Client.php';
require_once 'Google/Service/Books.php';
$client_id = 'xxxx.apps.googleusercontent.com';
$service_account_name = '[email protected]';
$key_file_location = 'xxxx-privatekey.p12';
echo pageHeader("Service Account Access");
if ($client_id == 'xxxx.apps.googleusercontent.com'
|| !strlen($service_account_name)
|| !strlen($key_file_location)) {
echo missingServiceAccountDetailsWarning();
}
$client = new Google_Client();
$client->setApplicationName("Client_Library_Examples");
$service = new Google_Service_Books($client);
if (isset($_SESSION['service_token'])) {
$client->setAccessToken($_SESSION['service_token']);
}
$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials(
$service_account_name,
array('https://www.googleapis.com/auth/books'),
$key
);
$client->setAssertionCredentials($cred);
if($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion($cred);
}
$_SESSION['service_token'] = $client->getAccessToken();
$optParams = array('filter' => 'free-ebooks');
$results = $service->volumes->listVolumes('Henry David Thoreau', $optParams);
echo "<h3>Results Of Call:</h3>";
foreach ($results as $item) {
echo $item['volumeInfo']['title'], "<br /> \n";
}
echo pageFooter(__FILE__);
Und wo ist die p12-Datei? Ist das nicht der wichtige Teil? –
Dies ist die p12-Datei, die Google beim Erstellen einer Dienstkonto-Client-ID bereitstellt. Es ist möglich, nehme ich an, dass etwas mit der Datei nicht stimmt, aber das scheint ein weit verbreitetes Problem zu sein, wenn Google schlechte p12-Dateien erzeugt. – theonlynewts