首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C#应用程序-阅读Google联系人

C#应用程序-阅读Google联系人
EN

Stack Overflow用户
提问于 2015-10-27 08:21:06
回答 2查看 5.5K关注 0票数 5

因为谷歌停止了对他们以前的八月的支持,现在我们不得不使用oAuth 2,我们的简单桌面应用程序再也不能读取我的谷歌帐户的联系人了。

好吧-我明白,但是这个新的oAuth 2非常复杂.我不是从开发人员的角度来谈论。从我在网上读到的。为了让我们的简单应用程序读取存储在Google邮件/联系人中的联系人,我们现在必须让我们的客户跳过许多圈。

我的iPhone似乎能够与大约一年前输入的典型电子邮件和密码同步联系人。他们是怎么让它起作用的?然而,在我的简单桌面应用程序中,客户端必须在Google Developer站点和API设置中四处搜索,等等。我是一个开发人员,我很困惑!-你能想象我的客户将要经历什么吗?不会这么复杂的。

有没有人可以给我一个简单的1,2,3来获得一个C#桌面应用程序,然后从一个特定的Gmail帐户获取联系人(只读).使用最少的篡改量(对于Gmail帐户的所有者)。

我在应用程序中做所有的艰苦工作--我只是不想让客户花费一个小时授权和创建API,然后在开发人员站点中点击(他/她不是开发人员)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-27 09:44:28

这里的主要问题是联系人是一个旧的Gdata。可以在Gdata库中使用Oauth2,但不能使用漂亮。就我个人而言,我喜欢破门而入。我将当前的.net客户端库与旧的Gdata库结合使用。

用于身份验证的Nuget新客户端库:

不是百分之百确定这是你唯一需要的,如果它不起作用,让我知道,我们可以找到它。你基本上需要Google.apis.auth.oauth2google apis.util.store

安装包Google.Apis.Auth

用于联系人的Nuget旧客户端库:

安装包Google.GData.Contacts

代码语言:javascript
运行
复制
 using Google.Apis.Auth.OAuth2;
using Google.Apis.Util.Store;
using Google.Contacts;
using Google.GData.Client;
using System;
using System.Threading;

public static void auth()
{

    string clientId = "xxxxxx.apps.googleusercontent.com";
    string clientSecret = "xxxxx";


    string[] scopes = new string[] { "https://www.googleapis.com/auth/contacts.readonly" };     // view your basic profile info.
    try
    {
        // Use the current Google .net client library to get the Oauth2 stuff.
        UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(new ClientSecrets { ClientId = clientId, ClientSecret = clientSecret }
                                                                                     , scopes
                                                                                     , "test"
                                                                                     , CancellationToken.None
                                                                                     , new FileDataStore("test")).Result;

        // Translate the Oauth permissions to something the old client libray can read
        OAuth2Parameters parameters = new OAuth2Parameters();
        parameters.AccessToken = credential.Token.AccessToken;
        parameters.RefreshToken = credential.Token.RefreshToken;
        RunContactsSample(parameters);
        Console.ReadLine();
    }
    catch (Exception ex)
    {

        Console.ReadLine();

    }
    Console.ReadLine();


}

/// <summary> 
/// Send authorized queries to a Request-based library 
/// </summary> 
/// <param name="service"></param> 
private static void RunContactsSample(OAuth2Parameters parameters)
{
    try
    {
        RequestSettings settings = new RequestSettings("Google contacts tutorial", parameters);
        ContactsRequest cr = new ContactsRequest(settings);
        Feed<Contact> f = cr.GetContacts();
        foreach (Contact c in f.Entries)
        {
            Console.WriteLine(c.Name.FullName);
        }
    }
    catch (Exception a)
    {
        Console.WriteLine("A Google Apps error occurred.");
        Console.WriteLine();
    }
}

教程可以找到这里

Google开发人员控制台

所有访问google的应用程序都必须在Google开发者控制台上注册。运行代码的注册用户不需要执行此步骤,而是访问Google的应用程序。你作为一个开发人员必须注册它。

由此,您可以获得上面代码中使用的客户端id和客户端秘密。

票数 8
EN

Stack Overflow用户

发布于 2015-10-27 08:48:50

我做过这件事,但这一切都有点模糊,就像你说的那样,很多曲解。

我认为您可以注册并在中安装一个项目,并生成一个服务帐户。然后,客户端将需要作为google管理登录到这里,并填写由开发人员控制台生成的服务帐户名称和需要访问的API范围的clientID字段。

最后,我以客户端的身份登录到他们的管理面板,并为他们设置它。在没有客户端的帮助下,没有一种简单的方法可以让谷歌应用程序重新销售。作为一个有大量谷歌搜索功能的开发人员,我设法弄明白了这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33362883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档