Google通讯录API 3.0版(.NET) - OAuth2.0 CRUD操作

时间:2015-01-02 00:36:08

标签: c# .net google-api google-oauth google-contacts

我已经设置了一个.NET控制台应用程序,它将执行以下操作:

  • 访问我的个人Google帐户的Google通讯录API
  • 对这些联系人执行基本的CRUD(创建,读取,更新,删除)操作

我相信使用以下文档可以直接执行CRUD操作:

https://developers.google.com/google-apps/contacts/v3/#about_authorization_protocols

但是,尝试使用OAuth2.0验证我的连接时出现问题。

我正在使用Google.GData.Contacts .NET NUGET Package,使用以下示例中的代码:

https://code.google.com/p/google-gdata/source/browse/trunk/clients/cs/samples/oauth2_sample/oauth2demo.cs?r=1159

OAuth2Parameters parameters = new OAuth2Parameters() {
    ClientId = clientId,
    ClientSecret = clientSecret,
    RedirectUri = redirectUri,
    Scope = scopes
};

string url = OAuthUtil.CreateOAuth2AuthorizationUrl(parameters);
Console.WriteLine("Authorize URI: " + url);
parameters.AccessCode = Console.ReadLine();

OAuthUtil.GetAccessToken(parameters);

由于此代码最后一次更新于2012年,我担心它可能不再与我的任务相关。

主要问题:

  • 我不确定parameters.AccessCode值究竟是什么。这个值来自哪里?
  • 根据我的用例,我使用正确的OAuth2.0方法吗?您可以为服务帐户,Web应用程序或本机应用程序设置身份验证。上面的代码暗示了Native Application
  • 有没有更好的方法来处理我的任务?

2 个答案:

答案 0 :(得分:0)

access code只能用于WebServer Applications

我不确定您的控制台应用是否会在可以启动浏览器的环境中运行。

如果是(您的应用在可以启动网址的环境中运行),请使用Installed Applications的文档。

如果浏览器不存在,您可以使用Applications on limited-input devices的文档。

如果您要使用的库(NUGET,无论如何)不支持此流程,请不要担心:编写自定义代码很容易。您可以使用任何能够执行HTTP / HTTPS请求的库,例如Windows.Web.Http.HttpClient(Windows 8及更高版本)。

此外,您可以使用CloudSponge之类的联系人导入服务,该服务提供.Net API并支持其他联系人来源(如果您希望将来扩展您的地址簿支持)。

答案 1 :(得分:0)

AccessCode来自上面该行中创建的URL。见这里:

string url = OAuthUtil.CreateOAuth2AuthorizationUrl(parameters);

url现在包含您的浏览器的网址。在Chrome / Firefox /等中填写并确认google请求以获取AccessCode。它看起来像“4 / bAQT1qf66vpkmfU8xDkoVZmedvVoYDH6KovzcHcA5pc”,但每次调用URL时都会改变。

Console.WriteLine("Authorize URI: " + url);

现在您可以看到该网址,但您可能无法从控制台复制该网址。但是如果你把它放到你的浏览器中,它将导致谷歌对话框来获取你的AccessCode。