【问题标题】:How to start using Google API v3?如何开始使用 Google API v3?
【发布时间】:2016-03-21 19:07:49
【问题描述】:

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

现在,我正在尝试开始使用 API 的第一步,我正在关注 Youtube API 的 official examples,我遇到的最大问题是我可以'不要重现示例,因为这些命名空间丢失了......所以我无法导入它们:

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

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

【问题讨论】:

  • 我有一些工作。我稍后会在这里发布。

标签: c# .net vb.net api google-api


【解决方案1】:

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

首先,我本人并没有去 Github 获取 .Net 的 API。至少对我来说,一个原因并且通常是一个问题是因为试图找出依赖关系等。考虑到这一点,我建议使用 NuGet 并使用 Package Manager Console。原因很简单,您不必担心编译源代码、引用其他库的问题、依赖项等...

我是如何让它发挥作用的?

请按照这些步骤操作,不仅可以让API 实际工作,而且我确实发现您在上面提供的官方示例存在更多问题(不是你的错 )。我相信这是新版本的变化,特别是YouTubeService 类。没有太多时间将其击倒或向他们报告,但 awaitExecuteAsync 存在问题......无论如何,让我们开始工作吧。

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

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

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

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

  1. 首先,您需要获取client_secrets.json,您可以通过Developer Console 进行操作。下载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()。这是我遇到的问题,这对 a$$ 来说是一个痛苦。它会执行,但我从来没有收到回复,从来没有,从来没有......直到我删除了上面列出的内容并替换了它们。

  1. 您还需要修改一处。请看下文...

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

你需要对这条线做同样的事情,就像我上面说的一样。完成后,您应该能够运行应用程序并返回结果。

我希望你能像我一样发现这很有用,也能减轻压力。同样正如我所提到的,关于ExecuteAsync 问题还没有向谷歌报告。我希望有人报告此问题,以便解决和修复它。

编码愉快!

等待参考

【讨论】:

  • 感谢您的回答。我坚持第一步,当我尝试下载 Youtube 包时,我收到一个 Nuget 错误,说我的客户端版本太旧了...Install-Package : The 'Microsoft.Bcl 1.1.10' package requires NuGet client version '2.8.1' or above, but the current NuGet version is '2.7.40911.287'.我在 Visual Studio 2013 Ultimate 下。我尝试通过VS的“普通”在线NuGet资源管理器搜索Youtube包,但没有找到。
  • 那么您是否安装了一些可能更新 NuGet 控制台的 VS2013 更新?可能是这样。我现在将搜索可用的 VS2013 更新。
  • 转到Tools --> Extentions & Updates --> 屏幕加载时查找Updates 并查看是否列出了NuGet。如果是这样,看看你是否可以更新......我也安装了2.8.50313.46......
  • 为了利益:通过安装此更新的扩展程序解决了问题visualstudiogallery.msdn.microsoft.com/…
  • 很高兴你得到它!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-14
  • 1970-01-01
相关资源
最近更新 更多