2011-09-19 3 views
2

내 사용자 내부에 일정 개인 페이지를보기위한 개인 공유 링크을 사용했지만, 지금은 구글이 일로그인 PHP (젠드 GDATA)와 구글에 브라우저

https://www.google.com/support/calendar/bin/answer.py?answer=1631300을 변경하기로 결정 내가 사용자의 말해봐 암호 및 사용자 이름. Google 계정에 로그인하고 Zend Framework를 사용하여 이벤트 나 물건을 추가 할 수는 있지만 어떻게 Google에 로그인하여 브라우저를 로그인 할 수 있습니까 (쿠키 나 다른 것을 삽입하십시오. 사용자가 이미 Gmail에 로그인 한 것처럼).

이렇게하면 사용자는 자신의 캘린더를 볼 수 있으며 아무런 경고 메시지도 표시되지 않습니다.

내가 자신의 Gmail 사용자/암호가있는 경우 내가 iframe에 달력 (심지어 너무 괜찮을 것 읽기 전용)을 표시 할 수있는 방법

(또는 구글)

+0

신을 위해서. Zend Framework, Zend는 회사입니다. – markus

답변

0

사용자가 캘린더를 공유했는지 또는 공개했는지 확인해야합니다. Google은 보안을 강화하려고합니다. 사용중인 방법으로 사용자의 개인용 캘린더에 액세스 할 수있었습니다. 이것은 분명히 바람직하지 않은 행동입니다. Google 데이터 프로토콜 API는 여러 가지 인증 방법을 지원합니다. HERE은 응용 프로그램에 적합한 것을 선택할 수 있도록 도와줍니다. API 문서는 oauth를 사용하여 인증하는 것이 좋습니다. http://oauth.net/ 사이트는 PHP에서 API에 액세스하기위한 여러 라이브러리를 제공합니다. OpenID는 또한 OAuth와 OpenID를 모두 활용하여 프로세스를 능률화하는 하이브리드뿐만 아니라 지원되는 옵션입니다.

IFrame에 캘린더를 표시하는 경우 캘린더의 아톰 피드를 가져와 html로 표시하는 html 페이지를 만드십시오. XML이므로 XML 처리 방식 (예 : XSLT, simpleXML 등)을 사용하면 iframe의 소스 속성으로이 페이지의 URL을 사용할 수 있습니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    <head> 
    <title>Example List of calendar contents</title> 
    </head> 
    <body> 
    <?php 
     // load library 
     require_once 'Zend/Loader.php'; 
     Zend_Loader::loadClass('Zend_Gdata'); 
     Zend_Loader::loadClass('Zend_Gdata_ClientLogin'); 
     Zend_Loader::loadClass('Zend_Gdata_Calendar'); 
     Zend_Loader::loadClass('Zend_Http_Client'); 

     // create authenticated HTTP client for Calendar service 
     $gcal = Zend_Gdata_Calendar::AUTH_SERVICE_NAME; 
     $user = "[email protected]"; 
     $pass = "pass"; 
     $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $gcal); 
     $gcal = new Zend_Gdata_Calendar($client); 

     // generate query to get event list 
     $query = $gcal->newEventQuery(); 
     $query->setUser('default'); 
     $query->setVisibility('private'); 
     $query->setProjection('basic'); 

     // get and parse calendar feed 
     // print output 
     try { $feed = $gcal->getCalendarEventFeed($query); } 
     catch (Zend_Gdata_App_Exception $e) { echo "Error: " . $e->getResponse(); } 
    ?> 
    <h1><?php echo $feed->title; ?></h1> 
    <p><?php echo $feed->totalResults; ?> event(s) found.<p/> 
    <ol> 
     <?php   
     foreach ($feed as $event) 
     { 
      echo "<li>\n"; 
      echo "<h2>" . stripslashes($event->title) . "</h2>\n"; 
      echo stripslashes($event->summary) . " <br/>\n"; 
      echo "</li>\n"; 
     } 
     echo "</ul>"; 
     ?> 
    </ol> 

    </body> 
</html> 

이 파일의 URL이 IFrame을의 원인 :

여기 젠드 가타 라이브러리를 사용하는 예입니다.
행운과 행복 코딩.

+0

감사합니다! 하지만 일부 자바 스크립트 일정에 이러한 이벤트를 주입하여 캘린더와 같은 사용자를 표시 할 수 있습니까? 그렇지 않으면 나에게 쓸모가 없다. – max4ever

+0

원하는대로 표시 할 수있다. 간단한 예제만으로도 결과를 나열 할 수 있지만 원하는대로 멋지게 표시 할 수 있습니다. –

5

당신은 쓸 수 없습니다 계정 UPDATE 사이트 간 정책으로 인해 도메인 외부의 쿠키가 발견되었습니다.

가장 간단한 방법은 사용자가 자신의 Google 계정에 로그인해야한다는 것입니다. 여기 Stackoverflow 에서처럼 Google 계정에서 사용하는 경우 사용자는 Google 로그인 페이지로 리디렉션되고 사용 권한이 부여 된 다음 다시 사이트로 리디렉션됩니다.

I think this may be a helpful resource.

+0

예, 공개 인증을 사용하십시오. 사용자가 Google ID로 사이트에 로그인해도 문제가 발생하지 않습니다. – markus

+0

나는 이것을 사용자를 위해 자동화 할 수 없다. 이것은 내부 웹 사이트이며 매번 로그인하도록 사용자에게 요청하는 것은 받아 들일 수 없다. ... – max4ever

+0

Google 쿠키의 유효 기한은 afaik이다. 그러면 다음에 사용자가 앱을 사용하려고하면 자동으로 로그인됩니다. – usoban