2017-08-29 3 views
0

Ich muss eine Excel-Datei auf Google Drive lesen. Ich brauche automatisch an Google ohne Aufforderung irgendeiner Form fahren verbinden ... ein Bot Dokument lesen muss ... Ich habe diesen Code:Fehler 404 beim Zugriff auf eine Datei über ein Dienstkonto

$service_account_file = dirname(__FILE__) . '/key-85ac95ab1e62.json'; 
$spreadsheet_id = 'the_id_inside_the_url_of_the_file'; 

$spreadsheet_range = 'Sheet1!A1:A1'; 
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $service_account_file); 
$client = new Google_Client(); 
$client->useApplicationDefaultCredentials(); 
$client->addScope(Google_Service_Sheets::SPREADSHEETS); 
$service = new Google_Service_Sheets($client); 
$result = $service->spreadsheets_values->get($spreadsheet_id, $spreadsheet_range); 
var_dump($result->getValues()); 

etwas schief geht ... ich erklären, wie ich erzeugt die key-*.json-Datei:

Auf Google Console Developer Ich habe auf Dienstkonto geklickt, dann habe ich ein neues erstellt und die JSON heruntergeladen .. diese JSON ist die key-*.json Datei. Ich habe diese Datei in meinem Projekt hinzugefügt (wie Sie in der ersten Zeile sehen können) ... Hier kopierte ich die Account Service Id, die ich später verwenden werde ...

Jetzt erkläre ich, wie ich die spreadheet_id bekomme ... Ich ging auf meiner Google Drive, rechtsklicken Sie auf die Datei und ich teilte es mit der Account Service Id (kopiert zuvor) und eine URL wurde generiert ... wenn ich die URL im Browser kopieren und hinterher geht alles funktioniert aber nicht im Projekt ... ich nehme die spreadsheet_id von url

dies ist der Fehler, den ich erhalten:

PHP Fatal error: Uncaught Google_Service_Exception: { 
    "error": { 
    "code": 404, 
    "message": "Requested entity was not found.", 
    "errors": [ 
     { 
     "message": "Requested entity was not found.", 
     "domain": "global", 
     "reason": "notFound 
     } 
    ], 
    "status": "NOT_FOUND 
    } 
} 

Was ist los? die Datei existiert und ich kann es im Browser sehen mit der gleichen URL, die ich in der PHP-Datei verwende ... so denke ich, es ist eine Verbindung oder Anmeldung Problem ...

keine Idee?

+2

Sie benötigen ein Dienstkonto in der Google API und verwenden dieses Konto zum Herstellen einer Verbindung. Die API-Dokumentation erklärt alles mit Beispielen. – ADyson

+0

Ich habe einen Dienst-Account ... und ich lese die Dokumente .... Der Code, den ich auf Post eingefügt habe, stammt aus der Dokumentation ... aber es ist nicht das, was ich brauche – Ciccio

+0

Wenn Sie ein Dienstkonto haben, warum ist es dann Nach Benutzeranmeldeinformationen fragen? Wo haben Sie dieses Codebeispiel genau gefunden? – ADyson

Antwort

0

Dies ist das übliche Problem mit Dienstkonten. Siehe https://stackoverflow.com/search?q=404+service+account

In einfachen Worten ist ein Dienstkonto NICHT das gleiche wie das Google-Konto, das Sie verwendet haben, um es zu erstellen. Verwenden Sie keine Dienstkonten oder teilen Sie die Datei von ihrem eigenen Konto mit dem Dienstkonto, um darauf zuzugreifen.

Verwandte Themen