2012-11-28 49 views
0

我有一個網站,它可以完成從Google BigQuery中獲取USN的簡單工作。現在,每次訪問時,我需要有一個Google帳戶,並且該特定的電子郵件ID應該具有在「小組選項卡」中分配的「權限」。我基本上希望網站能夠提供給所有人。而且我使用PHP,所以我需要關於在這裏很有用的函數的幫助。通過PHP授權應用程序無需用戶交互訪問BigQuery

回答

0

構建被授權訪問BigQuery API的應用程序(與需要用戶授權步驟相反)的最佳方式是使用OAuth2服務帳戶。實質上,服務帳戶授權爲「服務器到服務器」交互提供基於證書的授權(例如您的服務器端PHP腳本與BigQuery API交互)。

有關於使用Google PHP客戶端庫和服務帳戶授權here的文檔。

+0

我曾嘗試過這個PHP腳本,我得到了一個致命的錯誤,說'谷歌_Auth異常'消息'無法解析p12文件。這是一個.p12文件嗎?... – Aps18

+0

您可以確認您:1.按照說明中的說明下載您的私鑰文件(* .p12)2.它可用於您的PHP腳本? (換句話說,它是否在正確的路徑?) –

+0

是的,已經下載了私鑰,並將其標記爲key.p12,並且已經放在同一個目錄中,並且已經定義了const key =「key.p12」 。 – Aps18

0

您必須通過谷歌控制檯創建一個「服務帳戶」,並在您的服務器上下載私鑰文件(.p12)。並使用下面的代碼

/** 
    * setup service client using key file 
    * @param String $keyFileLoc location of .p12 file provided in google console 
    * @param String $clientEmail client location provided in google console 
    */ 
    function setupServiceClient($keyFileLoc,$clientEmail){ 
     $client = new Google_Client(); 
     $service = new Google_Service_Bigquery($client); 
     $client->setApplicationName("My Application Name"); 
     $key = file_get_contents($keyFileLoc); 
     $cred = new Google_Auth_AssertionCredentials(
      $clientEmail, 
      array('https://www.googleapis.com/auth/bigquery'), 
      $key 
     ); 
     $this->client->setAssertionCredentials($cred); 
     return $service; 
    } 
相關問題