通过c#dot net framework 2.0中的oauth凭据获取gmail日历

时间:2013-11-25 06:34:48

标签: google-oauth

我想通过桌面应用程序的oauth凭据阅读Google日历。 我完成了以下事情

  1. 在google api console注册
  2. 获得客户端ID,客户端密钥
  3. 现在正在寻找一些可以告诉我的例子 这可以通过带有google calendar api v3的dot net framework 4.0来实现。

    但由于某些原因,我需要坚持使用dot net framework 2.0。 那我怎么能做到这一点?

    我已经完成了使用用户名和密码阅读日历,但现在需要阅读oauth。

    由于我能够通过oauth阅读联系人,我确信将有一些方法可以为日历执行此操作。      conatcts代码:

       RequestSettings ObjectRequestSetting= new RequestSettings("appname",
                    "consumerkey", "consumersecretkey", "user", "domain");
       ContactsRequest objContactReq = new ContactsRequest(ObjectRequestSetting);
                ContactsService objService = new ContactsService("appname");
    

1 个答案:

答案 0 :(得分:0)

要使用googles连接到OAuth2客户端库有点棘手,但可以完成。我正常使用这种方法因为我不喜欢用我的应用程序发布第三方dll。

您需要的第一件事是构建将为您提供AutenticationCode的URL。

public static Uri GetAutenticationURI(Autentication MyAutentication)
{
List postData = new List();
postData.Add("client_id=<strong>{Client ID}</strong>");
postData.Add("redirect_uri=<strong>{Redirect URI}</strong>");
postData.Add("scope=<strong>{Scope}</strong>" );
postData.Add("response_type=code");
return new Uri("https://accounts.google.com/o/oauth2/auth" + "?" + string.Join("&", postData.ToArray()));
}

它返回的URI应该类似于https://accounts.google.com/o/oauth2/auth?client_id=。apps.googleusercontent.com&amp; redirect_uri = urn:ietf:wg:oauth:2.0:oob&amp; scope = https://www.googleapis.com/auth/calendar.readonly&access_type=offline&approval_prompt=force&response_type=code

您需要在某个位置对表单进行Web浏览器控件。无论你想在哪里打电话,都要做这样的事情。它将打开屏幕供用户授权您的应用程序。

wbAuthenticate.Url = Autentication.GetAutenticationURI(myAutentication);

当wbAuthenticate_DocumentCompleted返回时,您需要从HTML正文中删除Autentication代码。不要试图从标题中撕掉它,这并不总是核心。

一旦你有了AutenticationCode,你需要将它换成一个refreshtoken和一个accessstoken。访问令牌是您用于调用API的所有访问令牌。您使用refreshtoken在它到期后获取一个新的访问令牌,这在一小时内是正常的。您下次需要保存的唯一内容是RefreshToken。

我在博客文章中有所有这些代码,但它很大,我不确定在这里喷出那么多的代码。 http://daimto.com/google-api-and-oath2/