(C 번호/MVC3) :
컨트롤러 :... 나는이 시점에서 매우 간단한 MVC 응용 프로그램을
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 "Model"클래스를 인스턴스화합니다.
기본 클래스 :
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
}
}
내 Google 주소록 클래스 : 나는 피드 항목을 반복하려고 할 때까지
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 - Unauthorized 오류가 발생합니다.
왜 이런 이유입니까? 문서를 Google Dev에 올리고 있습니다.
저는 1.7.0.1 버전의 API를 사용하고 있습니다.
참고 : 좀 다른 코드와 blog entry를 발견하고 그 어떤 작품, 같아요. 이제 반 공식적인 방식으로 작동하지 않는 이유를 알아보십시오! 아이디어가있는 사람은 누구입니까?
전체 소스 코드 샘플을 사용하는 최종 해결책이 있습니까? – Kiquenet