gpt4 book ai didi

C# 应用程序 - 读取 Google 通讯录

转载 作者:太空狗 更新时间:2023-10-30 00:50:10 32 4
gpt4 key购买 nike

由于 Google 停止了对旧版 Auth 的支持,现在我们必须使用 oAuth 2,我们简单的桌面应用程序无法再从我的 Google 帐户读取联系人。

很好 - 我明白这一点,但是这个新的 oAuth 2 非常复杂......我不是从开发人员的角度谈论的。从我在网上阅读的内容。我们现在必须让我们的客户跳过许多障碍,以便我们的简单应用程序能够读取存储在他们的 Google 邮件/联系人中的联系人。

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

有没有人可以给我简单的 1、2、3 来让 C# 桌面应用程序启动并从特定的 Gmail 帐户获取联系人(只读)...最少 大量的摆弄(对于 Gmail 帐户的所有者)。

我会在应用程序中完成所有艰苦的工作——我只是不想让客户不得不花一个小时来授权和创建 API,然后在开发者网站上四处点击(他/她不是开发者)。

最佳答案

这里的主要问题是联系人是旧的 Gdata API。可以将 Oauth2 与 Gdata 库一起使用,但它不是 pretty .就个人而言,我喜欢破解一些东西。我将 Current .net 客户端库与旧的 Gdata 客户端库一起使用。

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

不能 100% 确定这是您唯一需要的,如果它不起作用,请告诉我,我们可以找到它。您基本上需要 Google.apis.auth.oauth2google apis.util.store

Install-Package Google.Apis.Auth

联系人的 Nuget 旧客户端库:

Install-Package Google.GData.Contacts

代码

 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();
}
}

教程可见here

Google 开发者控制台

所有访问 google api 的应用程序都必须在 Google developers console 上注册.运行代码的是注册用户访问谷歌的应用不需要做这一步。你作为开发者必须注册它。

从这里您可以获得上面代码中使用的客户端 ID 和客户端密码。

关于C# 应用程序 - 读取 Google 通讯录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33362883/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com