尝试使用 OATH2 对 Google Analytics API (v3) 进行身份验证时出现以下错误:
警告:openssl_sign() 期望参数 4 很长,字符串在第 60 行的 google-api-php-client/src/auth/Google_P12Signer.php 中给出
Google_AuthException:无法在第 61 行的 google-api-php-client/src/auth/Google_P12Signer.php 中签署数据
这是我的 PHP 代码:
// api dependencies
require_once(dirname(__FILE__) . '/../../vendor/google-api-php-client/src/Google_Client.php');
require_once(dirname(__FILE__) . '/../../vendor/google-api-php-client/src/contrib/Google_AnalyticsService.php');
session_start();
// create client object and set app name
$client = new Google_Client();
$client->setApplicationName(APP_NAME);
// set assertion credentials
$client->setAssertionCredentials(
new Google_AssertionCredentials(
'xxxxxxx@developer.gserviceaccount.com',
array('https://www.googleapis.com/auth/analytics.readonly'),
file_get_contents('xxxxxxxxxx-privatekey.p12') // keyfile
));
// other settings
$client->setClientId('xxxxxxx.apps.googleusercontent.com');
$client->setAccessType('offline_access');
// create service
$service = new Google_AnalyticsService($client);
$properties = $service->management_webproperties->listManagementWebproperties("~all");
print_r($properties);
如果我 print_r($service) 我得到一个没有错误的有效对象。生成错误的是 listManagementWebproperties() 调用。
请问有人有解决办法吗?看起来 Google_Client 可能在不断变化,因为它是在几天前编辑的。我通过 SVN 从主干获得它,而不是通过下载页面获得它,我相信它有一个不支持服务帐户的旧版本。谢谢。