gpt4 book ai didi

php - PHP 中的 YouTube 分析 API : I keep getting "Insufficient permissions" while authenticated

转载 作者:可可西里 更新时间:2023-11-01 01:02:08 26 4
gpt4 key购买 nike

我正在尝试使用 OAUTH2 在 PHP 中访问 YouTube Analytics API。在我的场景中,我首先检索 channel 数据,它工作正常(即使使用经过身份验证的段)。然后我在我的 Analytics-call 中解析 channel-id。 YouTube Analytics API 在我的 Google Developer Console 中激活。我最终遇到以下错误:

An client error occurred: Error calling GET https://www.googleapis.com/youtube/analytics/v1/reports?ids=channel%3D%3D##MY_CHANNEL_ID##&start-date=2014-01-01&end-date=2014-01-25&metrics=views&dimensions=7DayTotals&sort=day: (403) Insufficient Permission

这是我的代码。请注意,我手动添加了我的 channel ID 以确保它绝对正确。正如我所说:身份验证适用于 YouTube 数据 API,但无法连接到 Analytics-API。

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

$OAUTH2_CLIENT_ID = '##MY_CLIENT_ID##';
$OAUTH2_CLIENT_SECRET = '##MY_SECRET##';

set_include_path('##PATH_TO_CLIENT_LIBRARY##');
require_once 'Google/Client.php';
require_once 'Google/Service/YouTube.php';
require_once 'Google/Service/YouTubeAnalytics.php';

session_start();

$client = new Google_Client();
$client->setClientId($OAUTH2_CLIENT_ID);
$client->setClientSecret($OAUTH2_CLIENT_SECRET);
$client->setScopes('https://www.googleapis.com/auth/youtube.readonly', 'https://www.googleapis.com/auth/yt-analytics.readonly');
$redirect = filter_var('http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'], FILTER_SANITIZE_URL);
$client->setRedirectUri($redirect);

$youtube = new Google_Service_YouTube($client);

if (isset($_SESSION['token'])) {
$client->setAccessToken($_SESSION['token']);
}

if ($client->getAccessToken()) {
$analytics = new Google_Service_YouTubeAnalytics($client);

$id = 'channel==##MY_CHANNEL_ID##';
$start_date = '2014-01-01';
$end_date = '2014-01-20';
$optparams = array(
'dimensions' => '7DayTotals',
'sort' => 'day',
);

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

$api_response = $metrics;

foreach ($metrics as $metric)
{
$api = $analytics->reports->query($id, $start_date, $end_date, $metric, $optparams);
if (isset($api['rows'])) $api_response[$metric] = $api['rows'][0][0];
}
}

?>

顺便说一句,如果有人有使用 YouTube Analytics API 的 PHP 脚本的示例,如果您能分享它们,我将非常高兴。我还没有在整个 WWW 上看到一个可用的示例。

最佳答案

我自己已经找到了答案。问题出在行上

$client->setScopes('https://www.googleapis.com/auth/youtube.readonly', 'https://www.googleapis.com/auth/yt-analytics.readonly');

将其更改为下面的行使脚本工作:

$client->setScopes(array('https://www.googleapis.com/auth/youtube.readonly', 'https://www.googleapis.com/auth/yt-analytics.readonly'));

关于php - PHP 中的 YouTube 分析 API : I keep getting "Insufficient permissions" while authenticated,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21354369/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com