2017-06-22 77 views
0

我需要检索谷歌联系人信息,包括联系人的个人资料图片。为此,我使用下面的代码,除了联系人的个人资料图片外,其他所有内容都可以使用:我所获得的链接无处不在。有没有其他方法可以获得联系人的个人资料图片链接?检索谷歌联系人资料图片

GoogleCredential gc = new GoogleCredential(); 
    gc.setAccessToken(accessToken); 
    ContactsService contactsService = new ContactsService("ServiceName"); 

    contactsService.setOAuth2Credentials(gc); 
    URL url = new URL("https://www.google.com/m8/feeds/contacts/default/full/?max-results=10000"); 
    ContactFeed feed = null; 

    try { 
     feed = contactsService.getFeed(url, ContactFeed.class); 
    } catch (ServiceException e) { 
     e.printStackTrace(); 
    } 

    List<SocialContact> contacts = new ArrayList<>(); 

    if (feed != null) { 
     for (ContactEntry entry : feed.getEntries()) { 
      SocialContact contact = new SocialContact(); 

      if (entry.hasName()) { 
       Name name = entry.getName(); 

       if (name.hasFullName()) { 
        if (name.hasGivenName()) { 
         String givenName = name.getGivenName().getValue(); 

         if (name.getGivenName().hasYomi()) { 
          givenName += " (" + name.getGivenName().getYomi() + ")"; 
         } 

         contact.setFirstName(givenName); 

         if (name.hasFamilyName()) { 
          String familyName = name.getFamilyName().getValue(); 
          if (name.getFamilyName().hasYomi()) { 
           familyName += " (" + name.getFamilyName().getYomi() + ")"; 
          } 
          contact.setLastName(familyName); 
         } 
        } 
       } 
      } 

      for (PhoneNumber number : entry.getPhoneNumbers()) { 
       contact.setPhone(number.getPhoneNumber()); 
      } 

      for (Email email : entry.getEmailAddresses()) { 
       contact.setEmail(email.getAddress()); 
      } 

      contact.setProfileImageURL(entry.getContactPhotoLink().getHref()); 
      if(contact.getEmail() != null){ 
       contacts.add(contact); 
      } 
     } 
    } 

回答

1

听起来好像您使用的是联系人API,但也许您应该使用People API来代替。以下代码从these docs修改为:

ListConnectionsResponse response = peopleService.people().connections().list("people/me") 
    .setPersonFields("names,emailAddresses,photos") 
    .setPageSize(10000) 
    .execute(); 

List<Person> connections = response.getConnections(); 
    if (connections != null && connections.size() > 0) { 
     for (Person person : connections) { 
      List<Name> names = person.getNames(); 
      if (names != null && names.size() > 0) { 
       System.out.println("Name: " + person.getNames().get(0) 
         .getDisplayName()); 
      } else { 
       System.out.println("No names available for connection."); 
      } 

      List<Photo> photos = person.getPhotos(); 
      if (photos != null && photos.size() > 0){ 
       System.out.println("Photo URL: " + person.getPhotos().get(0).getURL()); 
      } 
     } 
    } else { 
     System.out.println("No connections found."); 
    } 
+0

此解决方案仅返回已添加到联系人中的人员。每个写信给我的联系人都不会返回。但照片网址返回正确,我可以看到联系人的个人资料图片 –

相关问题