如何将Google API的PHP客户端与Symfony 2集成?

时间:2015-07-02 11:47:59

标签: php symfony google-analytics-api google-api-php-client

我使用google-api-php-client创建了一个PHP应用程序。我从Google控制台创建了一个Google帐户电子邮件ID,我从那里生成了 P12 文件,然后将其放入我的本地服务器。这适用于" custom" PHP。

现在我想在自定义捆绑包中将google-api-php-client库与我的Symfony项目集成。我创建了一个文件夹' LIB'在/app/Resources内,我将google-api-php-client的所有文件放在那里。

然后我将下面的行放在主控制器中以包含autoload.php文件并访问Google_Client类:

//require_once($this->container->getParameter( 'kernel.root_dir' ). '/../src/ABC/Bundle/TTBundle/Lib/src/Google/autoload.php');
$service_account_email = 'xxxxx-yyyyyy@developer.gserviceaccount.com';
$key_file_location = 'API-Project.p12';

// Create and configure a new client object.
$client = new Google_Client();

但它显示以下错误:

  

FatalErrorException:错误:类   ' ABC \捆绑\ TTBundle \控制器\ Google_Client'找不到   d:\瓦帕\ WWW \ TTPR \电流\ SRC \ ABC \捆绑\ TTBundle \控制器\ WebAnalyticsController.php   第133行

1 个答案:

答案 0 :(得分:0)

我通过以下步骤解决了问题:

1-在我的控制器中创建一个函数:

2-在getService函数内部,我调用自己创建的函数来包含autoload.php文件:

重要的事情就是要知道是否有一个' BACK SLASH' (/)当创建类的对象时,我很想念这个' BACK SLASH'并且浪费了我的时间,希望这将帮助一个人节省时间:)

protected function includeSsrsSdk()
    {
          require_once($this->container->getParameter( 'kernel.root_dir' ). '/../src/MWAN/Bundle/BIBundle/Lib/src/Google/autoload.php');

    }



public function getService()
    {


      $this->includeSsrsSdk();
      $service_account_email = 'xxyyzz@developer.gserviceaccount.com';
      $key_file_location = $this->container->getParameter( 'kernel.root_dir' ). '/../src/MWAN/Bundle/BIBundle/Lib/API-Project-xxxx.p12';

      // Create and configure a new client object.
      $client = new \Google_Client();
      $client->setApplicationName("HelloAnalytics");
      $analytics = new \Google_Service_Analytics($client);

      // Read the generated client_secrets.p12 key.
      $key = file_get_contents($key_file_location);
      $cred = new \Google_Auth_AssertionCredentials(
          $service_account_email,
          array(\Google_Service_Analytics::ANALYTICS_READONLY),
          $key
      );
      $client->setAssertionCredentials($cred);
      if($client->getAuth()->isAccessTokenExpired()) {
        $client->getAuth()->refreshTokenWithAssertion($cred);
      }

      return $analytics;
    }