2017-06-22 3 views
0

Ich muss Google Kontakte Informationen einschließlich Kontakt Profilbild abrufen. Dazu benutze ich den unten stehenden Code und alles funktioniert außer dem Profilbild des Kontakts: Der Link, den ich bekomme, führt ins Nirgendwo. Gibt es eine andere Möglichkeit, den Profilbildlink des Kontakts zu erhalten?Abrufen von Google-Kontakt Profil Bild

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); 
      } 
     } 
    } 

Antwort

1

Es klingt wie Sie die Kontakte-API verwenden, aber vielleicht sollten Sie die People API stattdessen verwenden. Der folgende Code wird von these docs geändert:

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

Diese Lösung gibt nur Menschen, die in den Kontakten hinzugefügt. Alle anderen Kontakte, die mir geschrieben haben, kehren nicht zurück. Aber die URL des Fotos ist korrekt und ich kann das Profilbild des Kontakts sehen –