2017-05-02 5 views
0

enter image description here(구글 캘린더) 내 좋은 가 지금은 새로 고침 토큰을 얻을 수 있었다 많은 시간의 낭비 일 과거

.. 나는 토큰 전에 새로 고침을 가져올 수 없습니다 ..

나의 목적은 내가 그렇게 무슨 짓을 사용자

의 Google 로그인없이 구글 캘린더 데이터를 동기화하는 것입니다

  1. 나는 토큰 정보 흐름을 저장 내 데이터베이스에 이온
  2. 사용자는 내가 구글 캘린더 API 에서 데이터를 끌어 저장된 정보를 사용하지만 토큰이 시간
  3. 내가 새로 고침을 사용하여 사용 가능한 토큰을 얻을 수있는 가정에게 있습니다 유효 기간을 가지고 동기화하고자 할 때 토큰 및 Google 캘린더 API에서 데이터를 다시 가져옵니다 (그러나 어떻게?)

추가 질문 : 이전 새로 고침 토큰에서 다른 새로 고침 토큰을받을 수 있습니까? 새로 고침 토큰을 반복해서 얻을 수있는 것입니까?

public function __construct() 
{ 
    $client = new Google_Client(); 
    $client->setAuthConfig('client_secret.json'); 
    $client->addScope(Google_Service_Calendar::CALENDAR); // CALENDAR READONLY 는 읽기만 가능 
    $guzzleClient = new \GuzzleHttp\Client(array('curl' => array(CURLOPT_SSL_VERIFYPEER => false))); 
    $client->setHttpClient($guzzleClient); 
    $client->setAccessType ("offline"); 
    $client->setApprovalPrompt ("force"); 
    $client->setRedirectUri('http://localhost/smart_mirror/GoogleCalendarApi-master/public/api/cal'); 
    $this->client = $client; 
} 


$refresh_token=$this->client->fetchAccessTokenWithRefreshToken($this->client->getRefreshToken()); 
$this->client->getAuth()->refreshToken($this->client->getAuth()->getRefreshToken()); 
$refresh_token=$this->client->getAccessToken(); 

답변

0

액세스 토큰 수명을 제한 :

는 여기에 몇 가지 내 코드입니다. 애플리케이션이 단일 액세스 토큰의 유효 기간을 지나서 에 Google API에 액세스해야하는 경우 새로 고침 토큰을 얻을 수 있습니다. 새로 고침 토큰을 사용하면 응용 프로그램에서 에 새 액세스 토큰을 얻을 수 있습니다.

참고 : 보안 장기 보관함에 새로 고침 토큰을 저장하고 은 유효 기간 동안 계속 사용하십시오. 제한은 클라이언트 - 사용자 조합 당 발행 된 새로 고치기 토큰 수에 적용되며 모든 클라이언트에서 사용자 당 적용됩니다. 이러한 제한은 다릅니다. 응용 프로그램이 한계 중 하나 이상으로 이동하기에 충분한 새로 고침 토큰을 요청하면 이전 새로 고침 토큰이 작동을 멈 춥니 다.

$client->setAccessType("offline"); 

여기 SO post 추가 샘플입니다 :

Refreshing an access token (offline access)

응용 프로그램이 구글 API에 대한 오프라인 액세스를 필요로하는 경우

는 오프라인으로 할 수있는 API 클라이언트의 액세스 유형을 설정합니다.