如何开始使用 Google API v3?

问题描述 投票:0回答:1

我下载并编译了官方Google's API for .Net成功删除了一些不兼容的引用项目(移动WP81项目)。

现在,我正在尝试开始使用该 API 的第一步,我正在遵循 YouTube API 的官方示例,我遇到的大问题是我无法重现该示例,因为这些命名空间丢失...所以我无法导入它们:

Imports Google.Apis.Authentication
Imports Google.Apis.Authentication.OAuth2
Imports Google.Apis.Authentication.OAuth2.DotNetOpenAuth
Imports Google.Apis.Samples.Helper
Imports Google.Apis.Youtube.v3
Imports Google.Apis.Youtube.v3.Data

这些是我在项目中编译和引用的程序集:

Google.Apis.Auth.dll
Google.Apis.Auth.PlatformServices.dll
Google.Apis.Core.dll
Google.Apis.dll
Google.Apis.PlatformServices.dll

加上这些外部依赖项:

BouncyCastle.Crypto.dll
log4net.dll
Newtonsoft.Json.dll
Zlib.Portable.dll

我缺少什么?

更新

我认为存在两个问题,第一是示例似乎很旧,因为命名空间

Google.Apis.Authentication
似乎已更改为
Google.Apis.Auth
,但是,我仍然找不到这些等效的命名空间:

Google.Apis.Authentication.OAuth2.DotNetOpenAuth
Google.Apis.Samples.Helper
Google.Apis.Youtube.v3
Google.Apis.Youtube.v3.Data

第二个问题,似乎我需要下载额外的 Google 库/依赖项才能获取 YouTube API,然后才能看到 YouTube 命名空间,我想是这样,但我不知道在哪里下载。

c# .net vb.net google-api youtube-api
1个回答
2
投票

注意:此解决方案已经过尝试和测试

首先也是最重要的一点,我自己并没有去 Github 获取

.Net
的 API。一个原因(至少对我来说通常是一个问题)是因为试图找出依赖关系等。考虑到这一点,我建议使用 NuGet 并使用
Package Manager Console
。原因很简单,你不必必须担心编译源代码、与其他库的引用问题、依赖项等...

我如何让它发挥作用?

请按照以下步骤操作,因为不仅让

API
实际工作,而且我确实发现您上面提供的官方示例存在更多问题(不是您的错)。我相信它是新版本中的更改,特别是
YouTubeService
类。还没有太多时间来解决这个问题,也没有向他们报告,但这是
await
ExecuteAsync
的问题……无论如何,让我们开始工作吧。

  1. 获得一个新的 C# 项目,至少运行 4.5;我做了一个 C# 表单应用程序。您引用的是控制台,但仍会在
    Visual Studio Ouput Window
    中打印信息。保存该项目并运行至少一次;在将
    bin\debug
    用于
    Package Manager
    之前创建您需要的
    NuGet
    目录。
  2. 转到
    Tools --> NuGet Package Manager --> Package Manager Console
  3. 加载后复制并粘贴:Install-Package Google.Apis.YouTube.v3,然后按 Enter 键下载软件包。您将看到它下载了所有内容并且应该可以正常运行。您会注意到项目下有一个新文件:packages.config,它与此包相关,不要删除它。这也是该链接
    NuGet
    ,抓住它这里

此时,只需重新构建并运行您的程序即可。此时一切都应该很好。

这就是我已经解决的你的实际问题

现在谈谈我使用提供的(官方)示例遇到的问题。

  1. 首先您需要获取
    client_secrets.json
    ,您可以通过 开发者控制台 来完成此操作。下载
    json
    文件并将其放入您的
    bin\debug
    目录中。您可以担心稍后将其放置在其他地方......
  2. 在该示例中找到以下代码:

    // Retrieve the contentDetails part of the channel resource for the authenticated user's channel.
      var channelsListResponse = await channelsListRequest.ExecuteAsync();

您需要删除:

await
关键字和
ExecuteAsync()
到:
Execute()
。这是我遇到的问题,这让我很痛苦。它会执行,但我从来没有收到回复,从来没有,从来没有......直到我删除上面列出的并替换它们。

  1. 还有一处需要修改。请看下面...

// Retrieve the list of videos uploaded to the authenticated user's channel.
          var playlistItemsListResponse = await playlistItemsListRequest.ExecuteAsync();

您需要对这一行执行与我上面所说的相同的操作。完成后,您应该能够运行应用程序并返回结果。

我希望你能像我一样觉得这篇文章很有用并且能让你感到轻松。另外,正如我提到的,尚未向 Google 报告

ExecuteAsync
问题。我希望有人报告此问题,以便解决和修复它。

快乐编码!

参考等待

© www.soinside.com 2019 - 2024. All rights reserved.