我的网站使用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');
答案 0 :(得分:1)
如果您已授予对服务帐户的域范围访问权限 您要模拟用户帐户,请指定电子邮件地址 用户帐户使用
$client->setSubject($user_to_impersonate);
YouTube API不支持委派的域范围访问或服务帐户。您需要使用Oauth2进行身份验证。
答案 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