1

我正在使用Google 的 PHP 客户端库来访问分析 API,但我一直收到错误Call to a member function on a non-object。我被难住了一天多。我已经阅读了几个解决方案,但我没有看到如何解决这个问题。

require_once "google-api-php-client/src/Google_Client.php";
require_once "google-api-php-client/src/contrib/Google_AnalyticsService.php";
session_start();

$client = new Google_Client();
$client->setApplicationName("app-name");
$client->setClientId('client-id');
$client->setClientSecret('my-secret');
$client->setRedirectUri('http://www.website.com/');
$client->setDeveloperKey('secret-key');

$analyticsService = new Google_AnalyticsService($client);
$dailyUploads = $analyticsService->dailyUploads;

这是(我认为谷歌推荐的设置方式,但是当我打印出 $dailyUploads 的内容时,它的内容为空/null。如果我打印出 $analyticsService,我会看到 Google_AnalyticsService 的代码。

稍后在我的代码中,经过身份验证后,我尝试像这样使用上传功能:

$upload = $dailyUploads->upload($media);

这会产生我之前提到的错误,致命错误:在非对象上调用成员函数 upload()。

任何人都可以帮忙吗?我在看什么?

4

1 回答 1

2

我现在已经解决了这个问题。有两个问题:

  1. Google_AnalyticsService.php 文件自最近的稳定版本以来已更新,因此我链接到的代码实际上并未加载到我的项目中。我通过更新我的库以包含他们网站上显示的代码解决了这个问题。

  2. 引用该类的正确方法是“management_dailyUploads”。我这样更新了我的代码。

    $analyticsService = 新的 Google_AnalyticsService($client);
    $dailyUploads = $analyticsService->management_dailyUploads;

    $upload = $dailyUploads->upload('123456', 'UA-123456-1', 'xXxXxXxX', 2013-02-15, 1, 'cost', array("reset" => true, "data" = > file_get_contents('/path/to/file.csv'), "mimeType" => 'application/octet-stream', "uploadType" => 'media'));

一旦我实施了这些更新,我的应用程序就开始与 Google 的服务器通信。我现在有一个不同的问题要解决(我们不是总是这样吗?),但是提示这个线程的问题已经解决了,所以我会把它标记为已回答。

ps - 我不知道为什么这里的代码格式不正确。

于 2013-02-15T21:22:20.047 回答