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

时间:2017-05-09 07:05:12

标签: php oauth oauth-2.0 google-oauth youtube-data-api

我是谷歌oauthopenid连接的新用户,假设我需要服务帐户,用户在我的YouTube频道中存储视频,我创建了docs.but中提供的服务但我不知道如何获取访问令牌让我说这样的代码

    $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_get_contents($authurl)运行401 error时,我在这里犯了什么错误?

1 个答案:

答案 0 :(得分:0)

您可能会对某些条款感到困惑。 Oauth2会提示用户进行身份验证,询问用户是否可以访问您的YouTube数据。开发人员将获得一个刷新令牌,可用于检索新的访问令牌并访问用户YouTube频道上的数据。

服务帐户已获得预授权。我可以获取服务帐户电子邮件地址并授予其访问我的Google云端硬盘帐户中的文件夹的权限,然后可以读取和写入该文件夹。

YouTube API不支持服务帐户。

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

这里有一个很好的问题,如何在php客户端库中使用刷新令牌How to refresh token with Google API client?

$client->refreshToken($refreshToken);
$newtoken=$client->getAccessToken();