2015-12-15 1 views
0

J'essaie de créer un nouveau contact à l'aide de GData .Net Api. J'ai un AccessToken utilisant le plus récent Google.Apis.401 Erreur non autorisée lors de la tentative de création d'un contact Google App partagé

Ce jeton d'accès fonctionne bien pour obtenir, mettre à jour et supprimer des contacts, mais si j'essaye d'en créer un, je reçois une réponse non autorisée de 401.

C'est le code que j'utilise pour ajouter mon contact:

 if (string.IsNullOrEmpty(FullName)) 
     { 
      FullName = string.Format("{0} {1}", FirstName, LastName); 

      if (string.IsNullOrEmpty(FullName)) 
      { 
       ThrowTerminatingError(new ErrorRecord(
        new ArgumentException("Please provide a name for the contact"), 
        null, ErrorCategory.InvalidArgument, null)); 
      } 
     } 

     Contact = new Contact 
     { 
      Name = new Name 
      { 
       GivenName = FirstName, 
       FamilyName = LastName, 
       FullName = FullName 
      }, 
      Content = "Notes",      
     }; 

     foreach (var m in Emails) 
     { 
      Contact.Emails.Add(new EMail(m)); 
     } 
     RequestSettings settings = new RequestSettings(applicationName, AuthentParameters); 
     ContactsRequest cr = new ContactsRequest(settings); 

     var feedUri = new Uri(string.Format("{0}{1}/full/", Scope, Domain)); 
     cr.Insert(feedUri, Contact)); 

L'alimentation atomique suivant est envoyé en utilisant la méthode POST pour http://www.google.com/m8/feeds/contacts/(my domaine)/full /:

<?xml version="1.0" encoding="utf-8"?> 
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gd="http://schemas.google.com/g/2005"> 
    <gd:name> 
    <gd:givenName>Guillaume</gd:givenName> 
    <gd:familyName>Davion</gd:familyName> 
    <gd:fullName>Guillaume Davion</gd:fullName> 
    </gd:name> 
    <gd:email address="[email protected]" /> 
    <category term="http://schemas.google.com/contact/2008#contact" scheme="http://schemas.google.com/g/2005#kind" /> 
    <content type="text">Notes</content> 
</entry> 

en-têtes sont:

  • Type de contenu: application/atom + xml; charset = UTF-8
  • Autorisation: Bearer ya29 (jeton d'accès)
  • GData-Version:. 3.0

Merci à tous ceux qui pourraient me aider.

+0

Quelle portée avez-vous envoyé lorsque vous vous êtes authentifié? – DaImTo

+0

https://www.google.com/m8/feeds –

Répondre

0

j'ai réussi à le faire fonctionner avec deux choses: D'abord, changer la façon dont je construis la uri d'alimentation:

var feedUri = new Uri(ContactsQuery.CreateContactsUri(Domain)); 

Et en second lieu d'ajouter une étiquette à l'e-mail:

Contact.Emails.Add(new EMail(m) { Label = "Default" }); 

Avec ceci, l'addition se passe bien.