从google Plus api获取youtube用户名 - 访问令牌范围insufficientPermissions

时间:2013-08-13 11:11:31

标签: youtube-api google-api google-api-php-client

我正在尝试通过google plus api获取Youtube用户名。我使用来自Plus ang YT api的php服务,我正在使用symfony 2.获取访问令牌工作正常,我不会把它放在这里。 谷歌加服务也没有问题,授权后我得到了我需要的所有信息。在YT的情况下,我收到错误: insufficientPermissions错误 所以我在这里检查我的访问令牌范围: https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=ACCESS_TOKEN 我的访问令牌的范围仅适用于Google Plus,我无法强制谷歌Api php clinet使YT范围也可用。 有什么想法吗?

这是我的代码:

require_once '../src/google_api_php_client/src/Google_Client.php';
require_once '../src/google_api_php_client/src/contrib/Google_PlusService.php';
require_once '../src/google_api_php_client/src/contrib/Google_YouTubeService.php';

$client = new Google_Client();
$client->setScopes('https://www.googleapis.com/auth/youtube https://www.googleapis.com/auth/plus');

$youtube = new Google_YouTubeService($client);

if(!empty($allR['code'])){
    $client->setClientId('clientIDxxx');
    $client->setClientSecret('SecretXXX');  
    $client->setRedirectUri('postmessage');
    $client->authenticate($allR['code']);
    $token = json_decode($client->getAccessToken()); 
}

1 个答案:

答案 0 :(得分:0)

首先,请确保您已为devconsole启用了YouTube Data API v3。

然后尝试从devconsole设置客户端ID和密码,而不是设置范围。

$client = new Google_Client();
$client->setClientId($OAUTH2_CLIENT_ID);
$client->setClientSecret($OAUTH2_CLIENT_SECRET);
$redirect = filter_var('http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'],
    FILTER_SANITIZE_URL);
$client->setRedirectUri($redirect);

// YouTube object used to make all Data API requests.
$youtube = new Google_YoutubeService($client);

$plus = new $youtube = new Google_PlusService($client);