2017-08-22 1 views
1

Im Versuch, Google Person API für die Entwicklung von Anwendung zu lernen.C# google Leute api, peopleRequest vermisste PersonFields Attribut

Im Google API-Tutorial mit https://developers.google.com/people/v1/getting-started

using Google; 
    using Google.Apis.Auth.OAuth2; 
    using Google.Apis.People.v1; 
    using Google.Apis.People.v1.Data; 
    using Google.Apis.Services; 

    ... 

      static void Main(string[] args) 
      { 
       // Create OAuth credential. 
       UserCredential credential = 
    GoogleWebAuthorizationBroker.AuthorizeAsync(
        new ClientSecrets 
        { 
         ClientId = "CLIENT_ID", 
         ClientSecret = "CLIENT_SECRET" 
        }, 
        new[] { "profile", 
    "https://www.googleapis.com/auth/contacts.readonly" }, 
        "me", 
        CancellationToken.None).Result; 

      // Create the service. 
      var peopleService = new PeopleService (new BaseClientService.Initializer() 
      { 
       HttpClientInitializer = credential, 
       ApplicationName = "APP_NAME", 
      }); 

PeopleResource.ConnectionsResource.ListRequest peopleRequest = 
    peopleService.People.Connections.List("people/me"); 
peopleRequest.PersonFields = "names,emailAddresses"; 
ListConnectionsResponse connectionsResponse = peopleRequest.Execute(); 
IList<Person> connections = connectionsResponse.Connections; 

Wenn ich das Beispielskript in dem Tutorial verwenden, wird die Information ok retrived.

Ich habe eine Visual Studio mit C# erstellt. I Addon Referance zu allen Google API benötigt.

Das Projekt kompilieren nicht, weil PersonFields nicht erkannt wird. Dieses Attribut wird für den Erfolg benötigt

Antwort

2

So hatte ich das gleiche Problem und nach Stunden mein Gehirn zu zerstören, das versucht, es zu lösen, fand ich etwas nah an einer Lösung.

peopleRequest.RequestMaskIncludeField 

mit Werten wie folgt aus:

peopleRequest.RequestMaskIncludeField = "person.names"; 

("Namen" allein nicht funktioniert, "person.names" der Fall ist)

Damit ich es nicht geschafft, Fehler kompilieren zu haben und eine Antwort, die einzige Sache, die mir eine Menge Schmerzen gibt, ist, dass gemäß der Dokumentation ist dies veraltet ...

In der Hoffnung, dass Google die API bald aktualisieren wird, und dass dies Ihnen helfen kann !!

0

Ich laufe auf die gleichen Probleme. Nach Stunden des Herumspielens fand ich NICHT heraus, um den Namespace People.v1 zu verwenden (wie in Ihrem Codebeispiel), aber den Namespace PeopleService.v1. Das ist nicht das, was die Google-Dokumentation ausdrücklich sagt (es sagt überhaupt nicht viel) und vorerst bin ich nicht ganz sicher, was der Grund für diese unterschiedlichen Namensräume ist. Würde lieben, etwas Klärung zu finden ...

0

Das ich Born und arbeite.

 peopleRequest.RequestMaskIncludeField = new List<string>() { 
      "person.phoneNumbers" , 
      "person.EmailAddresses", 
      "person.names" 
     }; 

     ListConnectionsResponse people = peopleRequest.Execute(); 

     if (people != null && people.Connections != null && people.Connections.Count > 0) 
     { 
      foreach (var person in people.Connections) 
      { 
       Console.Write(person.Names != null ? (person.Names[0].DisplayName + " " ?? "n/a") : "n/a "); 
       Console.Write(person.EmailAddresses?.FirstOrDefault()?.Value + " "); 
       Console.WriteLine(person.PhoneNumbers?.FirstOrDefault()?.Value); 
      } 

      if (people.NextPageToken != null) 
      { 
       GetPeople(service, people.NextPageToken); 
      } 
Verwandte Themen