9

어떻게 토큰을 새로 고칠 수 있습니까? Google api를이 토큰과 함께 사용합니다. 작동하지만이를 새로 고치는 방법을 찾을 수 없습니다.이 예에서는 만료 된 시간을 저장하지 않습니다. 나는 토큰이 내가 일할 수 유효하지만 경우에 만료되는 경우oauth2 토큰을 새로 고침 Google api 및 HWIOAuthBundle

`access_type:  offline ` 

다음

$client = new Google_Client(); 
     //$client->setClientId($GoogleClientId); 
     $client->setApplicationName($GoogleAppName); 
     $client->setClientId($this->user->getGoogleId()); 
     $client->setAccessType('offline'); 

내가이 예에서 우리는 '돈 때문에

$token = [ 
      'access_token' => $this->user->getGoogleAccessToken(), 
      'expires_in' => (new \DateTime())->modify('-1 year')->getTimestamp(), 
     ]; 

내가이 모든 날짜를 넣어 시도 필요 t 만료 시간을 절약하십시오

https://gist.github.com/danvbe/4476697

여기 6,
$client->setAccessToken($token); 

    if($client->isAccessTokenExpired()){ 

     $refreshedToken = $client->refreshToken($client->getAccessToken()); 

난이 오류

array:2 [▼ 
    "error" => "invalid_request" 
    "error_description" => "Could not determine client ID from request." 
] 

토큰 새로 고침 HwiAuthBundle 방법이있다? Google_Client를 새로 고치면 왜 작동하지 않습니까?

+0

되지 않습니다 : 난 당신이 OAuth 클라이언트 ID를 생성하는 것이 필요하다고 생각? 고객 ID는 사용중인 새로 고침 토큰을 만드는 데 사용 된 Google 개발자 콘솔의 클라이언트 ID입니다. – DaImTo

+1

아직이 스레드를 보지 못했다면 토큰을 새로 고치면 해당 번들의 우선 순위가 낮아집니다. https://github.com/hwi/HWIOAuthBundle/issues/457 따라서 전체 플러그 앤 플레이 솔루션, 이것은 아니다. –

답변

-2

당신을 혼란에 빠뜨려서 미안하지만 그 패키지는 새로 고침 토큰 기능을 구현하지 않는 것 같습니다. 또는 그것은 당신에게 달렸습니다.

이 기능은 존재하지만 그것에 대한 쉬운 사용 당신이 필요로하는가 없다 : 여기에

https://github.com/hwi/HWIOAuthBundle/issues/457 문제에서 의견입니다 :

여기에 자신의 GitHub의에서 개방 문제는보고있다이다 자신 만의 모든 작업 (토큰에 대한 세부 정보 저장, 만료 감지, 새 토큰을 얻기 위해 Google 호출, 이전을 대체하는 )에 대한 자세한 내용은이 번들의 도움을 받아야합니다. 은 Google에 요청할 수있는 코드입니다. 새 신선한 토큰 :방법을 보여주기 위해) = 요지에이 기다리고 있습니다에

사람들 코드 (스 니펫)GenericOAuth2ResourceOwner :: refreshToken는(), 그것은 예상 로 작동해야하지만 나는 오랫동안이 번들을 사용하지 않은 이렇게하려면,하지만 지금까지 아무것도.

엔드 포인트에 보낼 필요가 만료 된 액세스 토큰 새로 고침 OAuth2.0에에서
+0

완전히 사실이 아닙니다. 토큰을 새로 고침하는 [메소드] (https://github.com/hwi/HWIOAuthBundle/blob/0.5.3/OAuth/ResourceOwner/GenericOAuth2ResourceOwner.php#L107) 기능을 사용하지만 문서화 방법은 없습니다 그것. 나는 문서뿐만 아니라 좋은 예제를 요구하고있다. –

+1

이 링크가 질문에 대답 할 수 있지만 여기에 답의 핵심 부분을 포함하고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. - [리뷰에서] (리뷰/저품절 포스트/17379223) –

+0

환호성 Donald, 조금 업데이트되었습니다. – delboy1978uk

1

:

  • 보조금 유형이
  • 'refresh_token도'같음 유효한 refreshToken
  • 당신 된 ClientID
  • 을 귀하의 고객 시큐리티

만료 된 액세스 토큰을 보내어 새로운 참조 번호를 얻을 수 없습니다 액세스 된 대화.

public function refreshAccessToken($refreshToken, array $extraParameters = array()) 
{ 
    $parameters = array_merge(array(
     'refresh_token' => $refreshToken, 
     'grant_type' => 'refresh_token', 
     'client_id' => $this->options['client_id'], 
     'client_secret' => $this->options['client_secret'], 
    ), $extraParameters); 
    $response = $this->doGetTokenRequest($this->options['access_token_url'], $parameters); 
    $response = $this->getResponseContent($response); 
    $this->validateResponseContent($response); 
    return $response; 
} 

기능 refreshAccessToken ($ refreshToken, ...

하지 $ accessToken

난 당신이 후 전화

$client = new Google_Client(); 
$client->setAuthConfig('client_secrets.json'); 
$client->refreshToken($client->getRefreshToken()); 

https://developers.google.com/api-client-library/php/auth/web-app#creatingcred

당신이 당신의 $client->setClientId($this->user->getGoogleId());의 확신 자격 증명을 사용하여 클라이언트를 구성 할 필요가 있다고 생각

? getGoogleId() 란 무엇입니까? OAuth는 CLIENT_ID에서 https://developers.google.com/identity/sign-in/web/devconsole-project

는 사용자 ID 만 응용 프로그램 이드 getGoogleId 무엇

+0

번들에 이미 토큰을 새로 고치는 방법이 있습니다. [GenericOAuth2ResourceOwner :: refreshToken()] (https://github.com/hwi/HWIOAuthBundle/blob/0.5.3/OAuth/ResourceOwner/GenericOAuth2ResourceOwner.php#L107), 하지만 [here] (https://github.com/hwi/HWIOAuthBundle/blob/master/Resources/doc/4-integrating_fosub.md)에 설명 된 워크 플로에서이를 구현하는 방법에 대한 문서가 없습니다. –

+0

네,하지만 refreshActionToken 메서드의 첫 번째 매개 변수에 refreshToken이 아니라 accessToken을 전달해야한다는 것을 명시해야합니다. oauth 2.0에서 액세스 토큰을 새로 고치려면 유효한 새로 고침 토큰을 보내야합니다. grant_type은 'refresh_token'이고 클라이언트 ID와 비밀번호는 –

+0

입니다. 동료들과 약간의 경연을하고 있는데 몇 가지 요점이 필요합니다. 감사 ! –