因为谷歌停止了对他们以前的八月的支持,现在我们不得不使用oAuth 2,我们的简单桌面应用程序再也不能读取我的谷歌帐户的联系人了。
好吧-我明白,但是这个新的oAuth 2非常复杂.我不是从开发人员的角度来谈论。从我在网上读到的。为了让我们的简单应用程序读取存储在Google邮件/联系人中的联系人,我们现在必须让我们的客户跳过许多圈。
我的iPhone似乎能够与大约一年前输入的典型电子邮件和密码同步联系人。他们是怎么让它起作用的?然而,在我的简单桌面应用程序中,客户端必须在Google Developer站点和API设置中四处搜索,等等。我是一个开发人员,我很困惑!-你能想象我的客户将要经历什么吗?不会这么复杂的。
有没有人可以给我一个简单的1,2,3来获得一个C#桌面应用程序,然后从一个特定的Gmail帐户获取联系人(只读).使用最少的篡改量(对于Gmail帐户的所有者)。
我在应用程序中做所有的艰苦工作--我只是不想让客户花费一个小时授权和创建API,然后在开发人员站点中点击(他/她不是开发人员)。
发布于 2015-10-27 09:44:28
这里的主要问题是联系人是一个旧的Gdata。可以在Gdata库中使用Oauth2,但不能使用漂亮。就我个人而言,我喜欢破门而入。我将当前的.net客户端库与旧的Gdata库结合使用。
用于身份验证的Nuget新客户端库:
不是百分之百确定这是你唯一需要的,如果它不起作用,让我知道,我们可以找到它。你基本上需要Google.apis.auth.oauth2
和google apis.util.store
。
安装包Google.Apis.Auth
用于联系人的Nuget旧客户端库:
安装包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();
}
}
教程可以找到这里
Google开发人员控制台
所有访问google的应用程序都必须在Google开发者控制台上注册。运行代码的注册用户不需要执行此步骤,而是访问Google的应用程序。你作为一个开发人员必须注册它。
由此,您可以获得上面代码中使用的客户端id和客户端秘密。
发布于 2015-10-27 08:48:50
我做过这件事,但这一切都有点模糊,就像你说的那样,很多曲解。
我认为您可以注册并在中安装一个项目,并生成一个服务帐户。然后,客户端将需要作为google管理登录到这里,并填写由开发人员控制台生成的服务帐户名称和需要访问的API范围的clientID字段。
最后,我以客户端的身份登录到他们的管理面板,并为他们设置它。在没有客户端的帮助下,没有一种简单的方法可以让谷歌应用程序重新销售。作为一个有大量谷歌搜索功能的开发人员,我设法弄明白了这一点。
https://stackoverflow.com/questions/33362883
复制相似问题