2016-06-08 4 views
5

사용자의 Google 계정을 사용하여 연락처를 가져 오는 동안 사람 API를 사용한 후 몇 가지 문제에 직면하고 있습니다. 나열된 모든 항목 중 일부 이메일 주소 만 반환합니다. 액세스 토큰과 모든 범위는 올바르게 설정하십시오. 다음에 대한 코드 : 내가 알고 싶은Google의 연락처 API 대

URL feedUrl = new URL("https://www.google.com/m8/feeds/contacts/default/full"); 
    ContactFeed resultFeed = myService.getFeed(feedUrl, ContactFeed.class); 

    // Print the results 
    System.out.println(resultFeed.getTitle().getPlainText()); 
    for (ContactEntry entry : resultFeed.getEntries()) { 
      .... 
      ..... 
      ....... 
} 

대신 그때 내가 접촉 API에 대한 people.Code 이상의 이메일 주소를 더 이상 받고 없습니다하고 구글의 연락처 API를 사용하는 경우이의

People peopleService = new People.Builder(httpTransport, jsonFactory, credential) 
        .build(); 
ListConnectionsResponse response = peopleService.people().connections().list("people/me") 
        .setPageSize(500).setSortOrder("FIRST_NAME_ASCENDING") 
        .setAccessToken(tokenResponse.getAccessToken()) 
        .setAlt("json") 
        .setRequestMaskIncludeField("person.names,person.emailAddresses,person.phoneNumbers") 
        . execute(); 
    connections = response.getConnections(); 

그 둘 사이에 어떤 차이가 있거나 더 나은 결과를 위해 사용해야하는 것이 있거나 뭔가를 놓치고 있다면. 제발 제안 해주세요. 감사..!!

+0

체크 아웃 https://people.googleapis.com/$discovery/rest?version=v1은 지원되는 스키마와 메소드를 제공합니다. – darewreck

답변

3

People API가 최신 버전입니다. Google's blog announcement을 통해 읽은 People API는 Google+ API 및 주소록 API에 대한 별도의 호출이 필요한 작업을 간소화합니다. 이제는 하나만 사용해야합니다.

사용자의 list of connections가의 correct scopes를 지정해야합니다 점점 ​​때

"새로운 사람들 API는 새로운 프로토콜과 기술 및 결국의 GData 프로토콜을 사용하는 연락처 API를 대체 사용" 그것을 사용할 때.

https://www.googleapis.com/auth/contacts - 앱에 인증 된 사용자의 Google 주소록에있는 연락처에 대한 읽기 및 쓰기 권한이 부여되도록 요청합니다. https://www.googleapis.com/auth/contacts.readonly - 앱에 인증 된 사용자의 Google 주소록에있는 연락처에 대한 읽기 권한이 부여되도록 요청합니다.

인물 API와 연락처 API 사이에 link for similarities and differences을 확인하십시오.

+0

나는 모든 스코프를 적절하게 추가했지만, 사람들은 API를별로 제공하지 않습니다. 연락처의 이메일 주소를 연락처 API로 사용합니다. – Ankur1994a

1

나는 자바 코드에 문제가 있는지 모르겠지만, 당신이 밖으로 전송되는 요청에 보면 그것은 다음과 같이해야합니다 :

URL : 내가 할 수 있었다 https://content-people.googleapis.com/v1/people/me/connections?pageSize=300&requestMask.includeField=person.names%2Cperson.email_addresses&sortOrder=FIRST_NAME_ASCENDING&key=

올바른 이메일과 이름을 가진 모든 연락처를 얻으려면. Google에서 "Google 연락처 관리"를 선택하면 연락처 목록이 표시됩니다. 거기에서 그 번호를 가져와 일치하는 연결 수를 인쇄하십시오. 페이지 크기가 충분히 크거나 모든 연락처를 가져 오기 위해 페이징을 처리해야합니다.

또한 나는 requestMask.includeField가 실제로 어떤 매개 변수와 공백에 민감하다는 것을 알게되었습니다. "person.name, person.email_addresses"는 작동했으며 "person.name, person.email_addresses"는 수행하지 않았습니다.

이전 연락처 API를 사용하면 사람 매개 변수가이 기능을 제공하지 않는다고 생각하는 q 매개 변수를 쿼리 할 수 ​​있습니다. 핵심 단어로 검색을 필터링하는 기능은 요청 크기를 줄이는 것이 중요하다고 생각합니다.