Hello,

As an administrator, you should only be able to read the user's data; this
is why you get a "this feed is read-only" error. However, there are 2
work-arounds available for you:
  - Ask the users to grant your administrator write access to their
calendar.
  - Use 2-legged OAuth, instead of ClientLogin, to "impersonate" your
users: http://code.google.com/apis/gdata/docs/auth/oauth.html#2LeggedOAuth

Best,
Alain

On Sat, Jun 11, 2011 at 9:13 AM, Takayuki ASAO <[email protected]>wrote:

> Thanks for your answer.
>
> > Do you know if this is only happening for secondary calendars or if this
> is also happening for primary calendars too?
>
> ⇒
> It is happening for not primary calendars only.
> To be precise, it's occured when inserting to other user's primary
> calendar.
>
> >Also, can you tell us what authorization mechanism your application is
> using?
>
> ⇒
> Yes, I use a authorization mecanism "Client Login".
>
> The authorization user is a administrator account of the domain.
> The target calendar is the other users primery calendar, the account is
> administrator of the domain or not.
>
> the follow code is the sample.
>
> The error message "This feed is read-only" appeared at the "★" mark.
> before, If the authorization user is the administrator of domain, the user
> had the permission of edit calendar.
>
>
> ------------------------------------------------------------------------------
> string strCalendarID = "targetuser1@mydomain";
>
> string strAdminAccount = "admin@mydomain";
> string strAdminPwd = "xxxxx";
>
> CalendarService service = new CalendarService("myapp");
> service.setUserCredentials(strAdminAccount, strAdminPwd);
>
> string strFeedUri = "https://www.google.com/calendar/feeds/"; +
> strCalendarID + "/private/full/batch";
> EventQuery query = new EventQuery(strFeedUri);
> EventFeed feed = service.Query(query);
> AtomFeed batchFeed = new AtomFeed(new Uri(strFeedUri), service);
>
> int idx = 0;
> foreach (EventEntry entry in feed.Entries)
> {
> // update sample
> entry.Content.Content += "update";
> entry.BatchData = new GDataBatchEntryData("UPDATE" + idx.ToString(),
> GDataBatchOperationType.update);
> batchFeed.Entries.Add(entry);
> idx++;
> }
>
> // insert sample
> EventEntry newEntry = createNewEntry();
> newEntry.BatchData = new GDataBatchEntryData("INSERT",
> GDataBatchOperationType.insert);
> batchFeed.Entries.Add(newEntry);
>
> EventFeed batchResultFeed = (EventFeed)service.Batch(batchFeed, new
> Uri(strFeedUri));
>
>
> bool success = true;
> foreach (EventEntry entry in batchResultFeed.Entries)
> {
> if (entry.BatchData.Status.Code != 200 && entry.BatchData.Status.Code !=
> 201)
> {
> success = false;
> Console.WriteLine("[FAILED]" + "[" + entry.BatchData.Status.Code + "]" +
> entry.BatchData.Id + ":" + entry.BatchData.Status.Reason);  // ←★
> }
> else
> {
> Console.WriteLine("[SUCCESS]" + "[" + entry.BatchData.Status.Code + "]" +
> entry.BatchData.Id + ":" + entry.BatchData.Status.Reason);
> }
> }
>
> Console.WriteLine(success);
>
>
>
>
> --
> You received this message because you are subscribed to the Google
> Groups "Google Calendar Data API" 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/calendar/community/forum.html
>



-- 
Alain Vongsouvanh

-- 
You received this message because you are subscribed to the Google
Groups "Google Calendar Data API" 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/calendar/community/forum.html

Reply via email to