当前位置: 首页 > 知识库问答 >
问题:

Youtube播放列表插入-权限不足

艾望
2023-03-14

当我试图用YouTube API创建播放列表时,我得到了如下所示的错误

rest.php第118行中的Google_Service_Exception:{“error”:{“error”:[{“domain”:“global”,“reason”:“insignentpermissions”,“message”:“permission”}],“code”:403,“message”:“permission”}}

谷歌回调

    $OAUTH2_CLIENT_ID = $config["api"]["google"]["client_id"];
$OAUTH2_CLIENT_SECRET = $config["api"]["google"]["client_secret"];

$client = new Google_Client();

$client->setClientId($OAUTH2_CLIENT_ID);
$client->setClientSecret($OAUTH2_CLIENT_SECRET);
$client->setScopes('https://www.googleapis.com/auth/youtube');

$redirect = filter_var($config["callbacks"]["google"],
    FILTER_SANITIZE_URL);

$client->setRedirectUri($redirect);
$auth_url = $client->createAuthUrl();
$youtube = new Google_Service_YouTube($client);

$tokenSessionKey = 'token-' . $client->prepareScopes();

if ($request->get('code')) {

    if (strval($app["session"]->get('state')) !== strval($request->get('state'))) {
        die('The session state did not match.');
    }

    $client->authenticate($request->get('code'));

    $plus = new Google_Service_Plus($client);

    $field = 'iemails,name,image';

    $me = $plus->people->get('me');



    $app["session"]->set('token-session-key',$tokenSessionKey);
    $app["session"]->set($tokenSessionKey, $client->getAccessToken());
    $app['session']->set('isAuthGoogle', true);

    return $app->redirect($config["callbacks"]["main"]);
}

if ($app["session"]->get($tokenSessionKey)) {
    $client->setAccessToken($app["session"]->get($tokenSessionKey));
}

return 1;
$OAUTH2_CLIENT_ID = $config["api"]["google"]["client_id"];
$OAUTH2_CLIENT_SECRET = $config["api"]["google"]["client_secret"];

$client = new Google_Client();

$client->setClientId($OAUTH2_CLIENT_ID);
$client->setClientSecret($OAUTH2_CLIENT_SECRET);
$a = $client->setScopes('https://www.googleapis.com/auth/youtube');
$b = $client->setScopes('https://www.googleapis.com/auth/plus.login');
$c = $client->setScopes('https://www.googleapis.com/auth/userinfo.email'); 

$redirect = filter_var($config["callbacks"]["google"], FILTER_SANITIZE_URL);

$client->setRedirectUri($redirect);
$auth_url = $client->createAuthUrl();

// hangi sayfadan geldik
if($_SERVER['HTTP_REFERER']){
    $app['session']->set('referer', $_SERVER['HTTP_REFERER']);
}

return $app->redirect($auth_url);

播放列表插入文件

$sessionKey = $app["session"]->get('token-session-key');
$accessToken = $app["session"]->get($sessionKey);
$OAUTH2_CLIENT_ID = $config["api"]["google"]["client_id"];
$OAUTH2_CLIENT_SECRET = $config["api"]["google"]["client_secret"];
$client = new Google_Client();
$client->setClientId($OAUTH2_CLIENT_ID);
$client->setClientSecret($OAUTH2_CLIENT_SECRET);
$client->setScopes('https://www.googleapis.com/auth/youtube');
$youtube = new Google_Service_YouTube($client);
$client->setAccessToken($accessToken);

$playlist = json_decode($request->get('spotifyplaylist'), true);
$playlistSnippet = new Google_Service_YouTube_PlaylistSnippet();
$playlistSnippet->setTitle($playlist["name"]);
$playlistSnippet->setDescription("Playlist created by Spotify to Youtube Playlist Conveter");
// Opsiyonel olucak
$playlistStatus = new Google_Service_YouTube_PlaylistStatus();
$playlistStatus->setPrivacyStatus('public');
$youTubePlaylist = new Google_Service_YouTube_Playlist();
$youTubePlaylist->setSnippet($playlistSnippet);
$youTubePlaylist->setStatus($playlistStatus);
$playlistResponse = $youtube->playlists->insert('snippet,status',$youTubePlaylist, array());
$playlistId = $playlistResponse['id'];

foreach ($playlist["tracks"] as $track) {
    $resourceId = new Google_Service_YouTube_ResourceId();
    $resourceId->setVideoId($track["id"]);
    $resourceId->setKind('youtube#video');
    $playlistItemSnippet = new Google_Service_YouTube_PlaylistItemSnippet();
    $playlistItemSnippet->setTitle($track["title"]);
    $playlistItemSnippet->setPlaylistId($playlistId);
    $playlistItemSnippet->setResourceId($resourceId);
    $playlistItem = new Google_Service_YouTube_PlaylistItem();
    $playlistItem->setSnippet($playlistItemSnippet);
    $playlistItemResponse = $youtube->playlistItems->insert(
        'snippet,contentDetails', $playlistItem, array());
}

共有1个答案

马臻
2023-03-14

问题已修复

    $scope = array(
    'https://www.googleapis.com/auth/youtube.upload', 
    'https://www.googleapis.com/auth/youtube', 
    'https://www.googleapis.com/auth/youtubepartner',
    'https://www.googleapis.com/auth/plus.login',
    'https://www.googleapis.com/auth/userinfo.email'
);

$client->setScopes($scope);
 类似资料:
  • 我正在尝试从播放列表中下载所有视频: 我使用youtube-dl进行此操作,命令如下: 但这只下载第一个视频。不知道我做错了什么。

  • 我正试图找出在给定频道频道ID的情况下获取频道上传播放列表ID的最佳方法。E、 g.对于具有channelID的信道 UC9CuvdOVfMPvKCiwdGKL3cQ 对应的上传playlistID为 UU9CuvdOVfMPvKCiwdGKL3cQ 请注意,第二个字符已从“C”更改为“U” 我可以通过字符串操作进行此转换,但我很好奇是否有更好,更不麻烦的方式通过官方youtube api找到上传

  • 我现在一直在努力使用Youtube的API v3,但我无法让它按照我想要的方式工作。我的目标是将选定播放列表中的最新视频加载到我的网站上。问题是,在我的回答中,我只有最老的视频。 要加载播放列表,我请求以下API URI:https://www.googleapis.com/youtube/v3/playlistItems 下面是一个请求的例子(点击执行即可):http://developers

  • 我正在使用自定义分析(而不是谷歌分析)设置活动跟踪,并为此设置接收器。我的接收器似乎在工作,但当我安装时,我收到一个android lint警告: 它看起来像任何旧的Android应用程序可以调用我的应用程序与意图,我不希望。应该只有谷歌应用商店(或任何其他Android系统应用程序,将安装我的应用程序从play store)发送该意图到我的应用程序。 因此,我试图找出如何设置将有效应用程序限制在

  • 我试图使用下面的json url显示我的youtube频道中的所有视频。但它只有25个视频显示从这个网址。 https://gdata.youtube.com/feeds/api/videos?author=Anklespankin 实际上,用户已经上传了500多个视频 https://www.youtube.com/user/Anklespankin 如何获取所有视频。给我一个json解决方案。

  • e 单列的数据类型从 NUMBER(4) 更改为 VARCHAR2(4)。DBA对现有值进行了转换。 现在,当我们尝试使用proc*c代码将记录插入表中时,会出现错误“ORA-01031:权限不足”。 从SQLPLUS我们能够插入记录。一段时间后问题消失了。一旦DBA重建表,问题就消失了。 每次我们用新的更改刷新测试环境后,都会出现此问题。

  • 我很困惑。据我所知,我完全遵循这些例子。也许我遗漏了一个参数,但我找不到它是什么。 控制台响应没有项目,但我有3个公共播放列表。 [Log]对象(learnadaapi.html,第68行) etag: “\”m2yskBQFythfE4irbTIeOgYYfBU/Rk41fm-2TD0VG1yv0-bkUvcBi9s\“” 项目: [] (0) 类型:“youtube#channelList响应