2012-10-18 3 views
0

asp.net 웹 응용 프로그램에서 Gmail 주소록에 액세스하려고합니다.asp.net에서 access_token을 사용하여 모든 Gmail 주소록에 액세스하십시오.

여전히 Google에서 access_token을 얻을 수 있지만이 acccess_token을 Google 연락처 API에 보내면 오류가 발생합니다.

아래는 내 응용 프로그램에서 리디렉션하고 사용자가 전자 메일 및 암호를 제공하여 인증하는 URL입니다.

https://accounts.google.com/o/oauth2/auth?scope=https://www.google.com/m8/feeds&redirect_uri=http://localhost:3223/WebSite1/Default.aspx&response_type=token&client_id=881595232473.apps.googleusercontent.com 

이 사용자가 액세스 토큰을 사용하여 웹 응용 프로그램으로 돌아온 후.

방법 1 - 웹 요청 :

여기에 나는 모든 연락처를 얻기 위해 두 개의 다른 방법을 사용했습니다 잘 작동

 HttpWebRequest request1 = (HttpWebRequest)WebRequest.Create(url1); 

    HttpWebResponse response1 = (HttpWebResponse)request1.GetResponse(); 

    System.IO.Stream ReceiveStream1 = response1.GetResponseStream(); 
    StreamReader readStream1 = new StreamReader(ReceiveStream1); 
    string result = readStream1.ReadToEnd(); 

그와 나 XML이 발생할 수 있습니다. 하지만 문제는 처음 25 개의 contac을 제공하는 반면 246 개의 연락처는 전부입니다.

방법 2 - 구글 연락 API : 여기

  RequestSettings rs = new RequestSettings("aman contact", Request.QueryString["access_token"].ToString()); 

    rs.AutoPaging = true; 
    ContactsRequest cr = new ContactsRequest(rs); 
    PrintAllContacts(cr); 
    Feed<Contact> f = cr.GetContacts(); 

는 나에게 다음과 같은 오류주고이 후

Execution of request failed: http://www.google.com/m8/feeds/contacts/default/full 

를 그것은 나에게 다음과 같은 오류와 옐로우 페이지를 보여줍니다

The remote server returned an error: (401) Unauthorized. 

답변

1

Google 주소록 API와 통합하기 위해 .Net을 사용하지 않았기 때문에 방법 1 - 웹 요청에 대한 질문에만 댓글을 달 수 있습니다.

max-query의 값을 전달하는 것이 좋습니다 (기본값은 25). 제 경험으로 API에서 약 500 개의 연락처를 가져 오는 데 1 초도 걸리지 않으므로 한 번에 특정 주소록을 안전하게 쿼리 할 수 ​​있어야합니다. 그러나이 값을 응용 프로그램 요구 사항에 맞게 조정해야합니다. 예를 들어 응용 프로그램의 응답 성이 높아야하는 경우이 값을 작게 설정하여 연락처를 더 빨리 채울 수 있습니다. 백그라운드에서이 작업을 수행하는 경우 5 초 동안 5000 개의 연락처를 기다리는 것이 좋습니다.

사람들은 주소록의 크기가 매우 다양하기 때문에 start-index 매개 변수를 사용하여 API를 여러 번 쿼리 할 수 ​​있어야합니다. 첫 번째 쿼리 후, 값을 살펴 여기 반환 걸릴 :

<openSearch:totalResults>1</openSearch:totalResults> 
    <openSearch:startIndex>1</openSearch:startIndex> 
    <openSearch:itemsPerPage>25</openSearch:itemsPerPage> 

total-results 당신이 모든 데이터를 얻기 위해 다른 start-index으로 조회해야하는 횟수를 계산하게됩니다.

Google 주소록 API (v3)는 parameters을 설명합니다. 경고 단어 인 start-index은 페이지 색인이 아닌 연락처 배열에 대한 1 기반 색인이므로 수학을 수행해야합니다. 예를 들어 연락처의 2 페이지에 액세스하려면 max-query=25&start-index=26을 요청하십시오.

+0

예 Graeme,이 매개 변수를 사용했습니다.그것의 작동 및 나에게 모든 연락처를 제공하지만, 그것은 방법 - 1에서 반환 된 큰 XML 파싱을위한 오버 헤드를 정말로 제거 할 것이기 때문에 Google Contact API를 사용하려했습니다. 그런데, 고맙습니다. –

관련 문제