Hello,

Domain admins don't have explicit write access to user's Contacts. You can
however use 2-Legged OAuth to "impersonate" your domain's users and add
contacts on their behalf:
  http://code.google.com/apis/gdata/docs/auth/oauth.html#2LeggedOAuth

Best,
Alain

On Thu, Nov 24, 2011 at 7:19 AM, Steve <[email protected]> wrote:

> Hi all,
>
> I'm writing some code to create various entries in Google apps for a
> number of users. I am running code under a super administrator account.
>
> I can successfully create appointments for other users using the following:
>
> ==============
> var domain = "mydomain.com";
> var adminUsername = "admin";
> var adminPassword = "admin";
> var targetUser = "bob.builder@" + domain;
>
> var service = new CalendarService("Appointment Creator");
> service.setUserCredentials(adminUsername + "@" + domain, adminPassword);
>
> var postUri = new Uri("http://www.google.com/calendar/feeds/"; +
> targetUser + "/private/full");
>
> var entry = new CalendarEntry
> {
>     Title = new AtomTextConstruct { Text = "New Appointment" },
>     Location = new Where("ABC1", "ABC2", "ABC3"),
> };
>
> service.Insert(postUri, entry);
> ==============
>
> Note that I've replaced my domain and log on details with dummy values!
>
> I have similar code to create contacts:
>
> ==============
> var domain = "mydomain.com";
> var adminUsername = "admin";
> var adminPassword = "admin";
> var targetUser = "bob.builder@" + domain;
>
> var service = new ContactsService("Create Contact");
> service.setUserCredentials(adminUsername + "@" + domain, adminPassword);
>
> var postUri = new Uri("https://www.google.com/m8/feeds/contacts/"; +
> targetUser + "/full/");
>
> var newEntry = new ContactEntry();
> newEntry.Title.Text = "John Doe";
>
> EMail primaryEmail = new EMail("[email protected]");
> primaryEmail.Primary = true;
> primaryEmail.Rel = ContactsRelationships.IsWork;
> newEntry.Emails.Add(primaryEmail);
>
> EMail secondaryEmail = new EMail("[email protected]");
> secondaryEmail.Rel = ContactsRelationships.IsHome;
> newEntry.Emails.Add(secondaryEmail);
>
> PhoneNumber phoneNumber = new PhoneNumber("555-555-5555");
> phoneNumber.Primary = true;
> phoneNumber.Rel = ContactsRelationships.IsMobile;
> newEntry.Phonenumbers.Add(phoneNumber);
>
> var postalAddress = new StructuredPostalAddress();
> postalAddress.City = "Boston";
> postalAddress.Primary = true;
> postalAddress.Rel = ContactsRelationships.IsHome;
> newEntry.PostalAddresses.Add(postalAddress);
>
> newEntry.Content.Content = "Who is this guy?";
>
> service.Insert(postUri, newEntry);
> ==============
>
> This code doesn't work! Here is the error I'm getting:
>
> Exception: Execution of request failed:
> https://www.google.com/m8/feeds/contacts/[email protected]/full
> Inner Exception: The remote server returned an error: (403) Forbidden.
>
> I don't understand why the appointments code works but the contacts code
> doesn't. Worst still, if I replace the target user with default, the
> contact code is able to save a user to the admin account with no issue.
>
> Has anyone seen anything like this before, and does anyone have any
> solutions? Any suggestions gratefully received.
>
> Thanks in advance,
>
> Steve.
>
> --
> You received this message because you are subscribed to the Google
> Groups "Google Contacts, Shared Contacts and User Profiles APIs" group.
> To post to this group, send email to
> [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://code.google.com/apis/contacts/community/forum.html
>



-- 
Alain Vongsouvanh | Developer Programs Engineer

-- 
You received this message because you are subscribed to the Google
Groups "Google Contacts, Shared Contacts and User Profiles APIs" group.
To post to this group, send email to
[email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://code.google.com/apis/contacts/community/forum.html

Reply via email to