- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遵循了文档指南中的文档和代码示例,即,此处:https://developers.google.com/youtube/v3/docs/commentThreads/insert但是当我执行脚本时,它总是返回一个错误代码的响应:403
message: "Insufficient Permission"
这是完整的响应对象:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "insufficientPermissions",
"message": "Insufficient Permission"
}
],
"code": 403,
"message": "Insufficient Permission"
}
}
我花了很多时间调试和上网寻找解决问题的方法,但没有找到任何资源来解决这个问题。如果有人能给我一些提示或解决方案,或者告诉我是否遗漏了什么,我将不胜感激。
附言我还在我的应用程序中使用了其他 API 方法,例如喜欢视频、订阅 channel 、使用 Google 登录,所有这些都运行良好。不明白为什么这个插入评论不起作用。
任何帮助将不胜感激。谢谢。
这是我用于调用 API 的 API 脚本。
<?php
// filename: api.php
class GoogleApi {
private $client_id;
private $client_secret;
private $redirect_uri;
private $client; // stored client instance
private $yt_service; // youtube service instance for making all api calls
public function __construct($client_id, $client_secret, $redirect_uri, $token = '') {
$this->client_id = $client_id;
$this->client_secret = $client_secret;
$this->redirect_uri = $redirect_uri;
// create google client instance
$this->client = $this->getClient();
if(!empty($token)) {
// set / refresh access token
$this->setRefreshAccessToken($token);
// Define an object that will be used to make all API requests.
$this->yt_service = new Google_Service_YouTube($this->client);
}
}
// Get a google client instance
// docs: https://developers.google.com/youtube/v3/guides/auth/server-side-web-apps
private function getClient($redirect_uri = '') {
if (!empty($redirect_uri)) {
$this->redirect_uri = $redirect_uri;
}
$client = new Google_Client();
$client->setAuthConfig('client_secrets.json');
$client->setScopes([
"https://www.googleapis.com/auth/userinfo.email",
"https://www.googleapis.com/auth/userinfo.profile",
"https://www.googleapis.com/auth/plus.me",
"https://www.googleapis.com/auth/plus.profiles.read",
"https://www.googleapis.com/auth/youtube"
]);
// available scopes: https://developers.google.com/identity/protocols/googlescopes
$client->setRedirectUri($this->redirect_uri);
$client->setState(mt_rand());
$client->setAccessType('offline');
$client->setApprovalPrompt('force');
$client->setIncludeGrantedScopes(true); // incremental auth
return $client;
}
public function setRefreshAccessToken($accessToken) {
// Set the access token
$this->client->setAccessToken($accessToken);
// Refresh the token if it's expired.
if ($this->client->isAccessTokenExpired()) {
// update access token
$this->client->fetchAccessTokenWithRefreshToken($this->client->getRefreshToken());
}
}
// Insert a comment on video
// docs: https://developers.google.com/youtube/v3/docs/commentThreads/insert
public function commentVideo($videoId, $commentText) {
$this->client->addScope('https://www.googleapis.com/auth/youtube');
$this->client->addScope('https://www.googleapis.com/auth/youtube.force-ssl');
# Create a comment snippet with text.
$commentSnippet = new Google_Service_YouTube_CommentSnippet();
$commentSnippet->setTextOriginal($commentText);
# Create a top-level comment with snippet.
$topLevelComment = new Google_Service_YouTube_Comment();
$topLevelComment->setSnippet($commentSnippet);
# Create a comment thread snippet with channelId and top-level comment.
$commentThreadSnippet = new Google_Service_YouTube_CommentThreadSnippet();
// $commentThreadSnippet->setChannelId($CHANNEL_ID);
$commentThreadSnippet->setVideoId($videoId); // Insert video comment
$commentThreadSnippet->setTopLevelComment($topLevelComment);
# Create a comment thread with snippet.
$commentThread = new Google_Service_YouTube_CommentThread();
$commentThread->setSnippet($commentThreadSnippet);
# Call the YouTube Data API's commentThreads.insert method to create a comment.
$response = $this->yt_service->commentThreads->insert('snippet', $commentThread);
// print_r($response);
return $response;
}
}
?>
这是我的端点脚本(我在此脚本上执行 ajax 调用)。
<php
// filename: comment.php
require_once("api.php");
// Insert a comment on youtube video.
if(empty($_POST['token'])) {
return die('parameter `token` is required.');
}
if(empty($_POST['videoId'])) {
return die('parameter `videoId` is required.');
}
if(empty($_POST['commentText'])) {
return die('parameter `commentText` is required.');
}
try {
// GoogleApi class instance
$api = new GoogleApi(CONSUMER_KEY, CONSUMER_SECRET, OAUTH_CALLBACK, $_POST['token']);
$data = $api->commentVideo($_POST['videoId'], $_POST['commentText']);
// send response.
echo json_encode($result);
} catch(Exception $err) {
return die($err -> getMessage());
}
?>
最佳答案
如果您安慰 CommentThreads: insert 的文档
Authorization
This request requires authorization with at least one of the following scopes (read more about authentication and authorization).
您会注意到,为了访问此方法,您需要包含此范围。
提示:如果您需要获得授权才能访问相关方法,则所有方法的文档都包含此授权部分。如果你总是检查它,那么你就不会再遇到这个问题。
关于php - Google Youtube API 插入评论总是返回错误响应 403 - "Insufficient Permission"- 域 "global",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50458183/
是否有任何解决方案来禁用右键单击选项并从 Youtube 视频中删除右下角水印 Logo ?我在搜索 GOOGLE 后尝试过。谁能告诉我? 谢谢你。 最佳答案 试试 modestbranding范围:
我想使用 YouTube API (v3) 来启用仅音乐轨道的搜索(没有猫或藤蔓或任何其他非音乐视频)。我查看了 API Explorer 和文档以获取有关该问题的任何指示,但找不到任何有用的信息。
我需要为网站使用YouTube视频缩略图的maxresdefault版本,但是在开发实现此目的的代码后,我发现并非所有视频都具有这些缩略图,尽管这些视频均为1080p。 有没有一种方法可以自动为我的所
我想通过“iframe”嵌入youtube视频,但YouTube在我国禁止使用,建议我如何在我的网站上嵌入视频! [1]:以下图片显示了在我的国家/地区无法访问youtube 最佳答案 该视频将被嵌入
我正在为myBB使用一个名为Profile Music Plugin的插件,可以在此处找到http://community.mybb.com/mods.php?action=view&pid=75 我
Youtube IFRAME API中是否有可以执行命令的功能,例如在播放的视频结尾处打开网站? (我相信有一个功能可以在旧的Java API下执行此操作,但该功能已于去年弃用。) 最佳答案 您可以引
我试图在Videos.insert和Videos.update查询中设置3d尺寸标志。但是标志不会改变。 更新查询示例: 请求: PUT https://www.googleapis.com/yout
使用此获取评论 评论主题:列表 GET https://www.googleapis.com/youtube/v3/commentThreads?part=snippet { "error": {
最近,我尝试使用OEmbed服务通过播放列表查询参数获取视频网址的iframe代码,但是OEmbed为我们提供了与我要求的视频不同的iframe代码。 这是带有播放列表查询参数的视频网址: https
我正在使用此代码: https://www.googleapis.com/youtube/v3/search?q=global+warming&part=id&maxResults=50&key=MY
我有一个LiveBroadcast,并且将来会添加一个scheduledStartTime。据我所知,这次测试不会对LiveBroadcast的整体状态产生影响,即广播是否具有准备就绪/测试的life
YouTube API是否支持在特定时间后关闭浏览器的参数? 这需要使用链接在不同位置共享来推广促销视频。视频播放结束后关闭浏览器。 最佳答案 您可以使用Youtube API监控视频是否播放完毕,然
如果没有表单上的透明面板,YouTube Player将可以正常播放视频,或者可以全屏播放视频,透明面板中有一些图像没有什么特别的。如果我取出透明面板,则YouTube播放器会按需工作,并嵌入到应用程
我正在通过Google进行身份验证,以尝试获取YouTube分析数据,但我的问题是我不知道在查询YouTube时如何向您填充参数 在这里,我正在提供一项新服务:然后尝试查询它 我不确定要在“ids”参
我想添加youtube视频列表,但不添加视频播放器。所以我需要的是 视频标题 视频缩略图 视频时长 我以某种方式设法通过使用此http://img.youtube.com/vi/4wew2uWoARw
我正在使用youtube api和python库gdata 我遵循了文档,但似乎没有出路。 问题是 - How do i get the size of the youtube video fil
使用Youtube API,我如何获得评论或顶过youtube视频的用户ID /处理列表? 提前致谢 最佳答案 在这里,您可以了解如何使用YouTube API v2(v3尚不支持此注释)获取评论:h
我正在为所有相关数据构建一个仪表板(以php为单位),我还想在YouTube“稍后观看”播放列表中显示我的商品数量。 我知道无法使用YouTube API来解决这个问题,但是也许有人想出一种解决方法?
我尝试使用YouTube API,但存在引号问题。 SearchResource.ListRequest searchListRequest = yt.Search.List("sni
我想为我的Android应用程序的用户构建视频推荐器。我有Google OAuth可以登录我的应用程序。我可以获取有关我的应用程序用户在YouTube上观看的视频的数据吗? 最佳答案 v3 API分为
我是一名优秀的程序员,十分优秀!