以下代码示例使用适用于 JavaScript 的 Google API 客户端库。您可以从 GitHub 上的 YouTube API 代码示例代码库的 javascript
文件夹中下载此示例。
该代码会请求用户授予访问 https://www.googleapis.com/auth/yt-analytics.readonly
范围的权限。
return gapi.auth2.getAuthInstance() .signIn({scope: "https://www.googleapis.com/auth/yt-analytics.readonly"}) ...
您的应用可能还需要请求访问其他范围。例如,调用 YouTube Analytics API 和 YouTube Data API 的应用可能也需要用户授予其 YouTube 帐号的访问权限。授权概览一文中指出了调用 YouTube Analytics API 的应用中通常使用的范围。
检索每日频道统计信息
此示例会调用 YouTube Analytics API 来检索授权用户频道在 2017 日历年的每日观看次数和其他指标。该示例使用 Google API JavaScript 客户端库。
设置授权凭据
首次在本地运行此示例之前,您需要为项目设置授权凭据:
- 在 Google API 控制台中创建或选择项目。
- 为您的项目启用 YouTube Analytics API。
- 在凭据页面顶部,选择 OAuth 同意屏幕标签页。选择电子邮件地址,输入产品名称(如果尚未设置),然后点击“保存”按钮。
- 在凭据页面上,点击创建凭据按钮,然后选择 OAuth 客户端 ID。
- 选择 Web 应用类型。
- 在“已获授权的 JavaScript 来源”字段中,输入您将提供代码示例的网址。例如,您可以使用类似
http://localhost:8000
或http://yourserver.example.com
的内容。您可以将“已获授权的重定向 URI”字段留空。 - 点击创建按钮以完成凭据的创建。
- 在关闭对话框之前,请复制客户端 ID,您需要将这些 ID 放入代码示例中。
制作示例的本地副本
然后,将示例保存到本地文件中。在示例中,找到以下行,并将 YOUR_CLIENT_ID 替换为您在设置授权凭据时获得的客户端 ID。
gapi.auth2.init({client_id: 'YOUR_CLIENT_ID'});
运行代码
现在,您可以实际测试示例了:
- 在网络浏览器中打开本地文件,然后在浏览器中打开调试控制台。您应该会看到一个显示两个按钮的页面。
- 点击授权并加载按钮,以启动用户授权流程。如果您授权该应用检索您的频道数据,您应该会看到在浏览器中输出到控制台的以下行:
Sign-in successful GAPI client loaded for API
- 如果您看到错误消息(而非上述代码行),请确认您是从为项目设置的已获授权的重定向 URI 中加载脚本,并将您的客户端 ID 放入上述代码。
- 点击执行按钮以调用该 API。您应该会在浏览器中看到
response
对象输出到控制台中。在该对象中,result
属性会映射到包含 API 数据的对象。
示例代码
<script src="https://apis.google.com/js/api.js"></script> <script> function authenticate() { return gapi.auth2.getAuthInstance() .signIn({scope: "https://www.googleapis.com/auth/yt-analytics.readonly"}) .then(function() { console.log("Sign-in successful"); }, function(err) { console.error("Error signing in", err); }); } function loadClient() { return gapi.client.load("https://youtubeanalytics.googleapis.com/$discovery/rest?version=v2") .then(function() { console.log("GAPI client loaded for API"); }, function(err) { console.error("Error loading GAPI client for API", err); }); } // Make sure the client is loaded and sign-in is complete before calling this method. function execute() { return gapi.client.youtubeAnalytics.reports.query({ "ids": "channel==MINE", "startDate": "2017-01-01", "endDate": "2017-12-31", "metrics": "views,estimatedMinutesWatched,averageViewDuration,averageViewPercentage,subscribersGained", "dimensions": "day", "sort": "day" }) .then(function(response) { // Handle the results here (response.result has the parsed body). console.log("Response", response); }, function(err) { console.error("Execute error", err); }); } gapi.load("client:auth2", function() { gapi.auth2.init({client_id: 'YOUR_CLIENT_ID'}); }); </script> <button onclick="authenticate().then(loadClient)">authorize and load</button> <button onclick="execute()">execute</button>