【问题标题】:PHP Google_Client insert youtube playlistItem (2-leg-oauth)PHP Google_Client 插入 youtube playlistItem (2-leg-oauth)
【发布时间】:2017-08-22 16:05:41
【问题描述】:

我的网站使用 PHP Google_Client 将 youtube playlistItem 插入我的播放列表(2-leg-oauth), 并得到错误 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');

【问题讨论】:

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


    【解决方案1】:

    如果您已委派服务帐户的域范围访问权限,并且 你想模拟一个用户帐户,指定电子邮件地址 用户帐号使用

    $client->setSubject($user_to_impersonate);
    

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

    见PHP Code Samples

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2013-09-19
        • 2012-09-17
        • 2015-01-10
        • 2014-01-18
        • 2013-09-23
        • 2018-12-04
        • 2015-10-31
        • 1970-01-01
        • 2015-09-20
        相关资源
        最近更新 更多