Php 如何从服务帐户获取访问令牌

Php 如何从服务帐户获取访问令牌,php,oauth,oauth-2.0,google-oauth,youtube-data-api,Php,Oauth,Oauth 2.0,Google Oauth,Youtube Data Api,我是googleoauth和openidconnect的新手,假设我需要一个服务帐户,用户可以在我的youtube频道中存储视频,我创建了文档中给出的服务。但我不知道如何获取访问令牌让我这样说我的代码 $param = $this->getParameter('kernel.root_dir').'/xxxx.json'; $client = new \Google_Client(); $client->setClientId('xxxxxxxx');

我是google
oauth
openid
connect的新手,假设我需要一个服务帐户,用户可以在我的youtube频道中存储视频,我创建了文档中给出的服务。但我不知道如何获取访问令牌让我这样说我的代码

    $param = $this->getParameter('kernel.root_dir').'/xxxx.json';
    $client = new \Google_Client();
    $client->setClientId('xxxxxxxx');
    $client->setScopes('https://www.googleapis.com/auth/youtube');
    $client->setRedirectUri('http://localhost:8000/youtube/1/token');
    putenv('GOOGLE_APPLICATION_CREDENTIALS='.$param.'');
    $authurl = $client->createAuthUrl();
    $youtube = new \Google_Service_YouTube($client);
    file_get_contents($authurl);

当我运行
file\u get\u contents($authurl)
时,我遇到了
401错误
,我在这里犯了什么错误?

您可能会对一些术语感到困惑。Oauth2提示用户进行身份验证,询问用户是否可以访问您的YouTube数据。开发者可以使用一个刷新令牌来检索新的访问令牌并访问用户YouTube频道上的数据

服务帐户是预授权的。我可以获得一个服务帐户的电子邮件地址,并授予它访问我的Google drive帐户上的文件夹的权限,然后它可以读写该文件夹

YouTube API不支持服务帐户

对于YouTube,您需要在保存刷新令牌后对代码进行身份验证,然后将该刷新令牌添加到代码中。然后,当其他用户希望将视频上载到您的帐户时,您可以使用刷新令牌获取访问令牌并上载文件

这里有一个很好的问题,就是如何在php客户端库中使用刷新令牌


谢谢,伙计,刷新令牌有生命周期吗?youtube为什么不支持服务帐户呢?刷新令牌不应该过期,但它们可以过期。你必须密切关注它,如果过期,请通知自己。如果在六个月内不使用,它将过期。好的,谢谢:-)这只是我的观点:YouTube最初不是谷歌的项目,他们买下了这家公司。YouTube的基础设施可能无法支持服务帐户。但这只是一个猜测。但如果我试图从刷新令牌获取访问令牌,它会一次又一次地显示同意屏幕以获取权限,我如何解决这个问题?
$client->refreshToken($refreshToken);
$newtoken=$client->getAccessToken();