我在這一點上有一個非常簡單的MVC應用程序:
控制器:正確進行身份驗證來獲得在谷歌聯繫人...(C#/ MVC3)
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "Welcome!";
var qs = HttpContext.Request.QueryString;
var keys = qs.AllKeys.ToList();
if (keys.Count > 0 && keys.Contains("token"))
{
Session["token"] = qs.Get("token");
Models.GoogleContact gc = new Models.GoogleContact();
}
else
{
ViewBag.GoogleUrl = AuthSubUtil.getRequestUrl(HttpContext.Request.Url.AbsoluteUri, "https://www.google.com/m8/feeds/", false, true);
}
return View();
}
public ActionResult About()
{
return View();
}
}
我有這個主頁查看:
@{
ViewBag.Title = "Home Page";
}
<p>Home Page...</p>
<a href="@ViewBag.GoogleUrl">Tie in with Google</a>
<br />
<br />
當應用第一次啓動時沒有查詢字符串,所以控制器將創建我在主頁上嵌入的鏈接。您點擊該鏈接並將其發送給Google。授權您希望此應用有權訪問Google通訊錄,並返回查詢字符串返回主頁。控制器看到查詢字符串,剝離令牌並實例化Google「模型」類。
基類:
internal class baseGoogle
{
#region Private Properties
internal const string googleContactToken = "cp";
internal const string googleCalendarToken = "cl";
internal string _authSubToken;
internal GAuthSubRequestFactory _gAuthSubRequestFactory;
internal RequestSettings _requestSettings;
internal ContactsRequest _contactsRequest;
internal ContactsService _contactsService;
#endregion
internal baseGoogle()
{
#if DEBUG
_authSubToken = HttpContext.Current.Session["token"].ToString();
_gAuthSubRequestFactory = new Google.GData.Client.GAuthSubRequestFactory(googleContactToken, "Tester1");
_requestSettings = new Google.GData.Client.RequestSettings(_gAuthSubRequestFactory.ApplicationName, _authSubToken);
_contactsRequest = new Google.Contacts.ContactsRequest(_requestSettings);
_contactsService = new Google.GData.Contacts.ContactsService(_gAuthSubRequestFactory.ApplicationName);
_contactsService.RequestFactory = _gAuthSubRequestFactory;
#endif
}
}
我谷歌聯繫人類別:
internal class GoogleContact : baseGoogle
{
#region Public Properties
[NotMapped]
public Dictionary<string, Group> Groups { get; set; }
#endregion
public GoogleContact() : base()
{
// Get the list of contact groups...
_requestSettings.AutoPaging = true;
Feed<Group> fg = _contactsRequest.GetGroups();
foreach (Group g in fg.Entries)
{
this.Groups.Add(g.Title, g);
}
}
}
一切似乎是工作的罰款,直到我試圖遍歷飼料項目。它會彈出一個401 - 未授權的錯誤。
爲什麼會這樣做的任何想法?我正在關注Google Dev上的文檔。
我正在使用API的1.7.0.1版本。
注:我發現了一個blog entry一些不同的代碼,你猜怎麼着,那工作。現在要弄清楚爲什麼半官方的方式不起作用!任何人有任何想法?
任何最終解決方案與完整的源代碼示例工作呢? – Kiquenet 2013-12-27 12:15:37