通过PHP授权应用程序无需用户交互访问BigQuery

问题描述:

我有一个网站,它可以完成从Google BigQuery中获取USN的简单工作。现在,每次访问时,我需要有一个Google帐户,并且该特定的电子邮件ID应该具有在“小组选项卡”中分配的“权限”。我基本上希望网站能够提供给所有人。而且我使用PHP,所以我需要关于在这里很有用的函数的帮助。通过PHP授权应用程序无需用户交互访问BigQuery

构建被授权访问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

您必须通过谷歌控制台创建一个“服务帐户”,并在您的服务器上下载私钥文件(.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; 
    }