James, thanks for your detailed answer.  I really appreciate it.

In my case, customers store their gmail username and password in our
database. So we don't bother to check the token. I have no problem to
add/editing google calendar event for customers.

I wonder if I go authsub approach, would it solve the empty page
problem(would it show a login page)?

Now I am really confused: what's the main purpose of bringing embed google
calendar? if you have to login in another window, then you could do all your
work there, why would you embed it?



On 24 June 2011 14:40, James Bowler <[email protected]> wrote:

> I might be off base, but it seems like you shouldn't be embedding a
> calendar at all. To create an event on  the user's behalf, you must get
> their permission. to do that, send them to this link (add your url)
>
> http://www.google.com/accounts/AuthSubRequest?next=YOUR RETURN URL
> &scope=http://www.google.com/calendar/feeds/&secure=&session=1
>
> If they want, they can give you their permission to create the event for
> them. if they're already logged into google, they can just click 'grant
> permission'. if not, they will be prompted to login first.
>
> once they give you permission, google will return the user to your return
> url, with a token in the url - you'll need this.
>
> this is called authsub:
> http://code.google.com/apis/accounts/docs/AuthSub.html
>
> then, do something like this
>
> //first, install zend gdata package<http://framework.zend.com/download/gdata> 
> ,
> and require the below files
> require_once 'Zend/Gdata/AuthSub.php';
> require_once 'Zend/Gdata/Calendar.php';
> //then, 'upgrade' the token
> if(isset($_GET['token'])) {
>   $_SESSION['sessionToken'] =
>       Zend_Gdata_AuthSub::getAuthSubSessionToken($_GET['token']);
> }
>
> then, create the client
> $client = Zend_Gdata_AuthSub::getHttpClient($_SESSION['sessionToken']);
>
> then, use the client, and create the 
> event<http://code.google.com/apis/calendar/data/2.0/developers_guide_protocol.html#CreatingEvents>
>
> $tzOffset = timefxn($timezone);
> $service = new Zend_Gdata_Calendar($client);
> // Create a new entry using the calendar service's magic factory method
>
> $event= $service->newEventEntry();
> // Populate the event with the desired information
> // Note that each attribute is crated as an instance of a matching class
> $event->title = $service->newTitle($title);
> $event->where = array($service->newWhere($where));
> $event->content =$service->newContent($desc);
> $when = $service->newWhen();
> $when->startTime = "{$startDate}T{$startTime}:00.000{$tzOffset}:00";
> $when->endTime = "{$endDate}T{$endTime}:00.000{$tzOffset}:00";
> $event->when = array($when);
>
>
> // Upload the event to the calendar server
> $newEvent = $service->insertEvent($event);
>
>
> probably more than you were looking for ..
>
> --
> 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
>



-- 
Best regards,

Tony Zhang
1place Limited
Level 3, 11 Clayton Street, Newmarket |Auckland 1740, New Zealand
Phone: +64 9 5200612 | Mob: +64 21 813900
Email: [email protected] | www.1placeonline.com

-- 
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