【问题标题】:Google Contacts API version 3.0 (.NET) - OAuth2.0 CRUD OperationsGoogle Contacts API 3.0 (.NET) - OAuth2.0 CRUD 操作
【发布时间】:2015-02-28 10:14:42
【问题描述】:

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

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

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

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

但是,我在尝试使用 OAuth2.0 对我的连接进行身份验证时出现问题。

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

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
  • 有没有更好的方法来处理我的任务?

【问题讨论】:

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


    【解决方案1】:

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

    string url = OAuthUtil.CreateOAuth2AuthorizationUrl(parameters);
    

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

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

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

    【讨论】:

      【解决方案2】:

      access code 只能用于WebServer Applications

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

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

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

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

      此外,您还可以使用CloudSponge 等联系人导入服务,它提供.Net API 并支持其他联系人来源(以备将来扩展通讯簿支持)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-22
        相关资源
        最近更新 更多