返回

向YouTube API PHP发送请求时出现奇怪错误

发布时间:2022-03-08 17:48:04 398
# node.js

我目前正在开发一个后端处理程序,从PHP上的YouTube analytics API请求返回频道分析信息。出于某种原因,我一直收到一条奇怪的错误信息:

foreach ($metrics as $metric) {
$api = $analytics->reports->query($id, $start_date, $end_date, $metric, $optparams);
print('reached');
    foreach ($api->rows as $r) {
        print($r[0]);
        print($r[1]);
    }
}

Fatal error: Uncaught TypeError: array_merge(): Argument #2 must be of type array, string given in ... 

所以我假设这个错误与$query输入应该是数组类型,所以我这样做了:

foreach ($metrics as $metric) {
$params = [$id, $start_date, $end_date, $metric, $optparams];
$api = $analytics->reports->query($params);
print('reached');
    foreach ($api->rows as $r) {
        print($r[0]);
        print($r[1]);
    }
}

Fatal error: Uncaught Google\Exception: (query) unknown parameter: '0'

但正如你所看到的,错误仍然存在。对于第二个问题,我假设,因为PHP中的数组在技术上是顺序映射,这就是为什么它对“0”保持一致,但我仍然不明白,如果不能处理它,为什么它会要求一个数组。

有关我的代码的更多内容,我正在使用Google API的PHP客户端库,这是我用composer require google/apiclient:^2.0.这是我的整个代码文件,我在其中实例化了所有对象:

if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
  // Set the access token on the client.
  $client->setAccessToken($_SESSION['access_token']);

  // Create an authorized analytics service object.
  $analytics = new Google_Service_YouTubeAnalytics($client);

} else {
  $redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/Analytics_Dashboard/oauth2callbackYouTube.php';
  header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}

// here we set some params
$id = '////////';
$end_date = date("Y-m-d"); 
$start_date = date('Y-m-d', strtotime("-30 days"));
$optparams = array(
    'dimensions' => '7DayTotals',
    'sort' => 'day',
);

$metrics = array(
    'views',
    'estimatedMinutesWatched',
    'averageViewDuration',
    'comments',
    'favoritesAdded',
    'favoritesRemoved',
    'likes',
    'dislikes',
    'shares',
    'subscribersGained',
    'subscribersLost'
);

$api_response = $metrics;

// You can only get one metric at a time, so we loop
foreach ($metrics as $metric)
{
    $params = [$id, $start_date, $end_date, $metric, $optparams];
    $api = $analytics->reports->query($params);
    // if (isset($api['rows'])) $api_response[$metric] = $api['rows'][0][0];
    print('reached');
    foreach ($api->rows as $r) {
        print($r[0]);
        print($r[1]);
    }
}

如果您有使用PHP与YouTube Analytics API进行交互的经验,我们将不胜感激!谢谢

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像