2017-08-29 88 views
0

訪問文件時,404我要讀谷歌驅動器上的Excel文件。我需要自動連接到谷歌驅動沒有提示任何形式......一個機器人必須閱讀文件...我有這樣的代碼:錯誤通過服務帳戶

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

不順心的事......我解釋我是如何產生的key-*.json文件:

Google Console Developer我點擊服務帳戶,然後我創建了一個新的並下載了json ..這個json是key-*.json文件。我已經在我的項目添加文件(你可以在第一行看)......在這裏,我複製Account Service Id,我會在以後使用...

現在我解釋我是如何得到spreadheet_id ...我去在我的谷歌驅動器上,右鍵點擊該文件,我與Account Service Id(複製之前)共享它,並且已經生成了一個網址...如果我在瀏覽器中複製並通過網址,一切正常,但不在項目中...我把spreadsheet_id從URL

這是錯誤我收到:

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 
    } 
} 

有什麼不對?該文件存在,我用我的PHP文件中使用相同的URL卡恩看到它的瀏覽器...所以我認爲這是一個連接或登錄問題...

什麼想法?

+2

你需要在谷歌API服務帳戶,並使用該帳戶進行連接。 API文檔用示例解釋了這一切。 – ADyson

+0

我有一個服務帳戶...和我讀的文檔....我上粘貼後的代碼是從文件...但它不是我所需要 – Ciccio

+0

如果你有一個服務帳戶,那麼爲什麼它要求用戶憑據?你從哪裏找到了這個代碼示例? – ADyson

回答

0

這是一般的問題,服務帳戶。請參閱以下任意https://stackoverflow.com/search?q=404+service+account

簡單地說,服務帳戶是不是與您用來創建它的Google帳戶相同。請勿使用服務帳戶,或將文件從其自己的帳戶分享給服務帳戶以授予其訪問權限。