1

我正在使用 Laravel-php,我有以下代码:

$client = new Google_Client();
        $client->setClientId(env('GOOGLE_ID'));
        $client->setClientSecret(env('GOOGLE_SECRET'));
        //$client->setRedirectUri($redirect_uri);
        $client->addScope("https://www.googleapis.com/auth/youtube.force-ssl");
        $client->addScope("https://www.googleapis.com/auth/youtube");
        $client->addScope("https://www.googleapis.com/auth/youtube.readonly");
        $client->addScope("https://www.googleapis.com/auth/youtubepartner");

        $youtube = new \Google_Service_YouTube($client);

        $searchResponse = $youtube->channels->listChannels('snippet', array('mine' => true));

        //$subscriptions = Curl::to('https://www.googleapis.com/youtube/v3/subscriptions')->withData(['part' => 'snippet', 'mine' => 'true'])->get();
        echo "<pre>";
        print_r($searchResponse);

上面的代码给了我以下错误:

Google_Service_Exception in REST.php line 118:
{  
"error": {
  "errors": [
  {
     "domain": "usageLimits",
     "reason": "dailyLimitExceededUnreg",
     "message": "Daily Limit for Unauthenticated Use Exceeded.      Continued use requires signup.",
     "extendedHelp": "https://code.google.com/apis/console"
 }],
 "code": 403,
 "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."


 }
}

我也尝试使用 CURL 调用,但这也给了我同样的错误,任何建议都会节省我的时间我在代码中缺少什么?

4

2 回答 2

1

您的错误意味着您尚未设置 Google API 控制台项目。您正在访问的资源需要 OAuth 授权。您需要在 Google Developers Console 中获取授权凭证才能使用 OAuth 2.0 授权。

  1. 打开凭据页面
  2. API 支持 API 密钥和 OAuth 2.0 凭据。在您的情况下,为您的项目使用 OAuth 2.0:

    • OAuth 2.0:您的应用程序必须将 OAuth 2.0 令牌与访问私人用户数据的任何请求一起发送。您的应用程序会发送一个客户端 ID,并且可能还会发送一个客户端密码来获取令牌。您可以为 Web 应用程序、服务帐户或已安装的应用程序生成 OAuth 2.0 凭据。

      有关详细信息,请参阅创建 OAuth 2.0 凭据部分。

您还可以查看此相关线程:list user subscriptions to all youtube channels after getting access token

于 2017-04-04T10:16:02.003 回答
0

首先,它必须是经过身份验证的调用。
因此,您需要让该人通过 Oauth2 进行“身份验证”并收集令牌。

然后使用令牌发送此调用

https://www.googleapis.com/youtube/v3/subscriptions?part=id,snippet,contentDetails&maxResults=50&channelId='.$channelId.'&access_token='.$access_token

然后您可以访问 JSON 响应并收集它们。

于 2017-04-03T15:48:48.497 回答