PHP Google_Client插入youtube playlistItem(2-leg-oauth)

时间:2017-03-29 09:00:25

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

我的网站使用PHP Google_Client在我的播放列表(2-leg-oauth)中插入youtube playlistItem, 并得到错误 Client is unauthorized to retrieve access tokens using this method. 我在哪里可以使用my-account@gmail.com设置服务器以获得访问google api的相同权限 像插入播放列表一样, 或者是否有其他方法而不使用my-account@gmail.com获得相同的权限?

PHP代码:

putenv('GOOGLE_APPLICATION_CREDENTIALS=client_secret.json');
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope('https://www.googleapis.com/auth/youtube');
$client->setSubject('my-account@gmail.com');

2 个答案:

答案 0 :(得分:1)

  

如果您已授予对服务帐户的域范围访问权限   您要模拟用户帐户,请指定电子邮件地址   用户帐户使用

$client->setSubject($user_to_impersonate);

YouTube API不支持委派的域范围访问或服务帐户。您需要使用Oauth2进行身份验证。

请参阅PHP Code Samples

答案 1 :(得分:0)

您遇到了一个常见问题。许多开发人员认为服务帐户是服务器应用程序与给定Google帐户的Google API服务进行通信的正确方式。它不是!顾名思义,服务帐户是一个全新的帐户(实际上是一种半帐户,因为您无法实际登录),专用于您的应用。

您需要做的是生成刷新令牌的一次性过程,您将安全地存储该过程。此后,只要您需要访问YouTube等Google API,您就会使用该刷新令牌生成访问令牌,您将在每个API请求中包含该令牌。这些步骤已枚举How do I authorise an app (web or installed) without user intervention? (canonical ?)https://www.youtube.com/watch?v=hfWe1gPCnzc