none
Ler contatos do Gmail via C# RRS feed

  • Pergunta

  • Eu tenho necessidade de ler meus contatos do gmail através de um programa que fiz em C#.

    Encontrei na internet um trecho do programa, mas não sei como utilizá-lo, ou seja, não sei como chamar esse código.

    Segue abaixo o código.

    private List<string[]> GetContact()
            {
                // login 
                ContactsService Service = new ContactsService("google-contacts");
                Service.setUserCredentials("your.email@gmail.com", "yourPassword");
                Service.QueryClientLoginToken();
    
                List<string[]> Contacts = new List<string[]>();
    
                ContactsQuery query = new ContactsQuery(ContactsQuery.CreateContactsUri("default"));
                query.StartIndex = 1;
    
                ContactsFeed feed = Service.Query(query);
    
                while (feed != null && feed.Entries.Count > 0)
                {
                    foreach (ContactEntry entry in feed.Entries)
                    {
                        // This Example gets the phone numbers but we can obtain the info we want/need about the contact 
                        if (entry.Phonenumbers.Count > 0) 
                        {
                            string phoneNumbers = "";
                            // get all phone numbers
                            for (int a = 0; a < entry.Phonenumbers.Count; a++)
                            {
                                phoneNumbers += entry.Phonenumbers[a].Value + "; ";
                            }
    
                            int x = phoneNumbers.LastIndexOf(";");
                            phoneNumbers = phoneNumbers.Substring(0, phoneNumbers.LastIndexOf(";"));
                            
                            // in the array "item" there are: fullname(name and surname), phone number1;phonenumber2;...., contact url for edit
                            string[] item = { entry.Name.FullName, phoneNumbers, entry.Id.AbsoluteUri };
                            Contacts.Add(item);
                        }
                    }
    
                    // move to next page until end
                    if (feed.NextChunk != null)
                    {
                        query.Uri = new Uri(feed.NextChunk);
                        feed = Service.Query(query) as ContactsFeed;
                    }
                    else
                        feed = null;
                }
    
                // sorting the list for full name
                Contacts.Sort(delegate(string[] item1, string[] item2)
                {
                    return item1[0].CompareTo(item2[0]);
                });
    
                return Contacts;
            }
    

    Como executar o código acima?

    Obrigado.


    prof. Taveira

    quarta-feira, 18 de novembro de 2015 17:13

Respostas

  • Para que isso funcione é necessario adicionar uma biblioteca..

    https://code.google.com/p/google-gdata/downloads/list

    na pagina acima, exsitem diversos exemplos de uso, veja:

    public static void PrintAllContacts(ContactsRequest cr)
    {
      Feed<Contact> f = cr.GetContacts();
      foreach (Contact entry in f.Entries)
      {
        if (entry.Name != null)
        {
          Name name = entry.Name;
          if (!string.IsNullOrEmpty(name.FullName))
            Console.WriteLine("\t\t" + name.FullName);
          else
            Console.WriteLine("\t\t (no full name found)");
          if (!string.IsNullOrEmpty(name.NamePrefix))
            Console.WriteLine("\t\t" + name.NamePrefix);
          else
            Console.WriteLine("\t\t (no name prefix found)");
          if (!string.IsNullOrEmpty(name.GivenName))
          {
            string givenNameToDisplay = name.GivenName;
            if (!string.IsNullOrEmpty(name.GivenNamePhonetics))
              givenNameToDisplay += " (" + name.GivenNamePhonetics + ")";
            Console.WriteLine("\t\t" + givenNameToDisplay);
          }
          else
            Console.WriteLine("\t\t (no given name found)");
          if (!string.IsNullOrEmpty(name.AdditionalName))
          {
            string additionalNameToDisplay = name.AdditionalName;
            if (string.IsNullOrEmpty(name.AdditionalNamePhonetics))
              additionalNameToDisplay += " (" + name.AdditionalNamePhonetics + ")";
            Console.WriteLine("\t\t" + additionalNameToDisplay);
          }
          else
            Console.WriteLine("\t\t (no additional name found)");
          if (!string.IsNullOrEmpty(name.FamilyName))
          {
            string familyNameToDisplay = name.FamilyName;
            if (!string.IsNullOrEmpty(name.FamilyNamePhonetics))
              familyNameToDisplay += " (" + name.FamilyNamePhonetics + ")";
            Console.WriteLine("\t\t" + familyNameToDisplay);
          }
          else
            Console.WriteLine("\t\t (no family name found)");
          if (!string.IsNullOrEmpty(name.NameSuffix))
            Console.WriteLine("\t\t" + name.NameSuffix);
          else
            Console.WriteLine("\t\t (no name suffix found)");
          }
          else
            Console.WriteLine("\t (no name found)");
            foreach (EMail email in entry.Emails)
          {
            Console.WriteLine("\t" + email.Address);
          }
      }
    }

    ContactsRequest (parametro da funçao acima)  criado desta maneira:

    using Google.Contacts;
    using Google.GData.Contacts;
    using Google.GData.Client;
    using Google.GData.Extensions;
    // ...
        RequestSettings settings = new RequestSettings("YOUR_APPLICATION_NAME");
        // Add authorization token.
        // ...
        ContactsRequest cr = new ContactsRequest(settings);
    // ...

    Note que como é uma aplicaçao externa acessando a sua lista de contatos, provevelmente voce vai ter que permitir acesso.

    toda a explicaçao esta no link acima, que explica como usar a API.


    att



    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    quarta-feira, 18 de novembro de 2015 17:51
    Moderador

Todas as Respostas

  • Para que isso funcione é necessario adicionar uma biblioteca..

    https://code.google.com/p/google-gdata/downloads/list

    na pagina acima, exsitem diversos exemplos de uso, veja:

    public static void PrintAllContacts(ContactsRequest cr)
    {
      Feed<Contact> f = cr.GetContacts();
      foreach (Contact entry in f.Entries)
      {
        if (entry.Name != null)
        {
          Name name = entry.Name;
          if (!string.IsNullOrEmpty(name.FullName))
            Console.WriteLine("\t\t" + name.FullName);
          else
            Console.WriteLine("\t\t (no full name found)");
          if (!string.IsNullOrEmpty(name.NamePrefix))
            Console.WriteLine("\t\t" + name.NamePrefix);
          else
            Console.WriteLine("\t\t (no name prefix found)");
          if (!string.IsNullOrEmpty(name.GivenName))
          {
            string givenNameToDisplay = name.GivenName;
            if (!string.IsNullOrEmpty(name.GivenNamePhonetics))
              givenNameToDisplay += " (" + name.GivenNamePhonetics + ")";
            Console.WriteLine("\t\t" + givenNameToDisplay);
          }
          else
            Console.WriteLine("\t\t (no given name found)");
          if (!string.IsNullOrEmpty(name.AdditionalName))
          {
            string additionalNameToDisplay = name.AdditionalName;
            if (string.IsNullOrEmpty(name.AdditionalNamePhonetics))
              additionalNameToDisplay += " (" + name.AdditionalNamePhonetics + ")";
            Console.WriteLine("\t\t" + additionalNameToDisplay);
          }
          else
            Console.WriteLine("\t\t (no additional name found)");
          if (!string.IsNullOrEmpty(name.FamilyName))
          {
            string familyNameToDisplay = name.FamilyName;
            if (!string.IsNullOrEmpty(name.FamilyNamePhonetics))
              familyNameToDisplay += " (" + name.FamilyNamePhonetics + ")";
            Console.WriteLine("\t\t" + familyNameToDisplay);
          }
          else
            Console.WriteLine("\t\t (no family name found)");
          if (!string.IsNullOrEmpty(name.NameSuffix))
            Console.WriteLine("\t\t" + name.NameSuffix);
          else
            Console.WriteLine("\t\t (no name suffix found)");
          }
          else
            Console.WriteLine("\t (no name found)");
            foreach (EMail email in entry.Emails)
          {
            Console.WriteLine("\t" + email.Address);
          }
      }
    }

    ContactsRequest (parametro da funçao acima)  criado desta maneira:

    using Google.Contacts;
    using Google.GData.Contacts;
    using Google.GData.Client;
    using Google.GData.Extensions;
    // ...
        RequestSettings settings = new RequestSettings("YOUR_APPLICATION_NAME");
        // Add authorization token.
        // ...
        ContactsRequest cr = new ContactsRequest(settings);
    // ...

    Note que como é uma aplicaçao externa acessando a sua lista de contatos, provevelmente voce vai ter que permitir acesso.

    toda a explicaçao esta no link acima, que explica como usar a API.


    att



    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    quarta-feira, 18 de novembro de 2015 17:51
    Moderador
  • Olá William.

    Já li e reli as informações do link que me enviou mas não dá certo.No caso do seu exemplo, a chamada a procedure

    public static void PrintAllContacts(ContactsRequest cr)

    é feita como? Na linha

    RequestSettings settings = new RequestSettings("YOUR_APPLICATION_NAME");

    o que é YOUR APPLICATION NAME? Qualquer nome serve?

    Desculpe, mas precisaria de conseguir isso, mas não tenho conseguido.

    No caso do código que eu postei na pergunta não é possível fazer por ele?

    Obrigado


    prof. Taveira

    quinta-feira, 19 de novembro de 2015 17:51
  • >o que é YOUR APPLICATION NAME? Qualquer nome serve?

    A API precisa de um nome de uma aplicaçao para saber quem esta tendando acessar. Qualquer nome serve.

    >No caso do código que eu postei na pergunta não é possível fazer por ele?

    Aparentemente ele tambem usa a mesma bliblioteca, mas algumas classes estao diferentes. Pode ser que o codigo esteja baseado na versao 2 desta API. O link que eu te passei é a da versao 3.

    Sugiro que voce encontre o topico original de onde voce extraiu o codigo para ver  se o autor faz referencia à qual versao da API ele usa.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    quinta-feira, 19 de novembro de 2015 17:56
    Moderador
  • William.

    Tenho um pouco de dificuldade em algumas situações em C#. O meu conhecimento é pequeno.

    Eu na realidade, só precisava fazer a leitura dos contatos, porque ai eu gravava em um banco de dados Access que tenho na minha aplicação. Assim essa minha aplicação estaria sempre atualizada.

    Você não quer fazer um teste no código que te passei? Te informo o email e senha.

    Obrigado mais uma vez.

    Taveira


    prof. Taveira

    sábado, 21 de novembro de 2015 17:03
  • Professor Taveira,

    Eu poderei fazer um teste com seu código somente à partir da semana que vem (caso possa esperar). Como eu disse, seria interessante saber o endereço do artigo original. Se possivel poste aqui.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    segunda-feira, 23 de novembro de 2015 16:13
    Moderador
  • Boa tarde William.

    Posso esperar sim.

    O endereço do artigo original é:

    http://dotnetoday.blogspot.com.br/2012/10/c-google-api-getting-google-contacts.html

    Texto completo com exclusão, inclusão, etc.

    http://dotnetoday.blogspot.com.br/search/label/Google%20API%20-%20Contact

    Tem esse também:

    https://developers.google.com/google-apps/contacts/v2/developers_guide_dotnet

    Muito obrigado novamente.


    prof. Taveira


    segunda-feira, 23 de novembro de 2015 16:36
  • using Google.Contacts; using Google.GData.Contacts; using Google.GData.Client; using Google.GData.Extensions; // ... RequestSettings settings = new RequestSettings("YOUR_APPLICATION_NAME");

    // O que meter aqui? é que diz para meter o token, mas o token agora é criado com uso ao jason certo?

    já não é da mesma forma como na V1 e 2???

    fico mesmo confuso com esta API // ...

    ContactsRequest cr = new ContactsRequest(settings); // ...

    terça-feira, 6 de agosto de 2019 07:45