如何开始使用Google API v3?

时间:2016-03-21 19:07:50

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

我下载并编译了官方的 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

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

1 个答案:

答案 0 :(得分:2)

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

首先,我自己没有去Github获取.Net的API。一个原因并且通常至少对我来说是一个问题是因为试图弄清楚依赖性等等。考虑到这一点,我建议使用 NuGet 并使用Package Manager Console。原因很简单,你 不得不担心编译源代码,引用问题与其他库,依赖关系等......

  

我是如何让它工作的?

请按照以下步骤操作,不仅让API真正有效,而且我确实发现上面提供的官方示例存在更多问题( 不是您的错误 )。我相信它是新版本的变化,特别是YouTubeService类。没有太多时间敲打这个或者向他们报告,但awaitExecuteAsync是一个问题...无论如何,让我们开始工作。

  1. 获取新的C#项目至少 4.5 ;我做了一个C#表单应用程序。您引用的是控制台,但仍会在Visual Studio Ouput Window中打印出信息。保存此项目并至少运行一次;在使用bin\debug的{​​{1}}之前创建所需的Package Manager目录。
  2. 转到NuGet
  3. 加载后复制并粘贴:安装 - 打包Google.Apis.YouTube.v3 ,然后按Enter键下载软件包。你会看到它下载所有东西,应该很好。您会注意到项目下的新文件: packages.config 与此软件包相关, 不会将其删除 。此处还有Tools --> NuGet Package Manager --> Package Manager Console的链接,抓住HERE
  4. 此时,只需重新构建并运行您的程序即可。在这一点上,一切都应该很棒。

    这是您解决的实际问题

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

    1. 首先,您需要获得NuGet,然后您可以通过Developer Console执行此操作。下载client_secrets.json文件并将其放在json目录中。您可以担心以后将它放在别处......
    2. 在该示例中找到以下代码:

      bin\debug

    3. 您需要将// Retrieve the contentDetails part of the channel resource for the authenticated user's channel. var channelsListResponse = await channelsListRequest.ExecuteAsync();关键字和await移至:ExecuteAsync()。这是我遇到的问题,这是a $$的痛苦。它会执行,但我从来没有收到回复,从来没有,从来没有......直到我删除了上面列出的并替换它们。

      1. 您还需要修改一个地方。请看下面......
      2. Execute()

        你需要为这条线路做同样的事情以及我上面所说的。完成后,您应该能够运行应用程序并获得结果。

        我希望你能像我一样发现这有用并且有所缓解。另外正如我所提到的,谷歌尚未向{1}}问题报告。我希望有人报告这一点,以便解决和修复。

        快乐的编码!

        参考等待

        enter image description here