我正在使用 Google Contacts Data API 按照此处的文档获取所有用户联系人 https://developers.google.com/google-apps/contacts/v3/
首先,我使用 Google Auth 使用以下代码对应用程序的用户进行身份验证:
string authSubUrl = AuthSubUtil.getRequestUrl("http://localhost:62439/ContactImporter/GoogleContacts.aspx", "https://www.google.com/m8/feeds/", true, true);
Response.Redirect(authSubUrl);
用户成功登录后的第二秒,我使用 Google 提供的请求令牌重定向到 GoogleContacts.aspx 页面,然后尝试通过以下代码获取联系人:
if (!string.IsNullOrEmpty(Request["token"]))
{
GAuthSubRequestFactory authFactory = new GAuthSubRequestFactory("cp", "alpha");
RequestSettings rs = new Google.GData.Client.RequestSettings("alpha",Request["token"]);
ContactsRequest cr = new ContactsRequest(rs);
Feed<Contact> f = cr.GetContacts();
foreach (Contact entry in f.Entries)
{
foreach (EMail email in entry.Emails)
{
Response.Write("\n" + email.Address);
}
}
}
该代码在大约 4 或 5 天后一直有效,但现在不起作用,并给我带来以下错误:
The remote server returned an error: (401) Unauthorized.
at Google.GData.Client.GDataRequest.Execute()
at Google.GData.Client.GDataGAuthRequest.Execute(Int32 retryCounter)
at Google.GData.Client.GDataGAuthRequest.Execute()
at Google.GData.Client.Service.Query(Uri queryUri, DateTime ifModifiedSince, String etag, Int64& contentLength)
at Google.GData.Client.Service.Query(Uri queryUri, DateTime ifModifiedSince)
at Google.GData.Client.Service.Query(FeedQuery feedQuery)
at Google.GData.Client.Feed`1.get_AtomFeed()
at Google.GData.Client.Feed`1.<get_Entries>d__0.MoveNext()
at GoogleContacts.Page_Load(Object sender, EventArgs e) in d:\Working Folder\API's\ContactImporter\GoogleContacts.aspx.cs:line 25
at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
关于如何解决该错误有什么建议吗?
这不是您正在寻找的答案,但我可以让您放心。 你的代码没有任何问题。谷歌最近在没有通知的情况下取消了联系人 API 服务。 没有人知道他们是否已使其过时或出于其他原因将其删除。 截至昨天,他们甚至删除了 API 文档。然而,它的链接仍然发布在他们的API列表中https://developers.google.com/google-apps/app-apis不再有任何文档,谷歌也没有解释为什么它被关闭了。希望这不是一个永久的事情。谷歌尚未就此问题向开发者做出答复。