9

Jetonu nasıl yenileyebilirim? Google api'yi bu belirteçle kullanıyorum - işe yarıyor ancak nasıl yenileyeceğini bulamıyor, bu örnekte zaman aşımından tasarruf etmiyoruz. Ben belirteci i çalışabilir geçerli ancak ne zaman bitmiş iseYenile oauth2 jetonu google api ve HWIOAuthBundle

`access_type:  offline ` 

sonra

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

ben bu örnekte biz 'don nedeniyle

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

ben bu herhangi bir tarih koymak deneyin gerektirir t zaman aşımına uğramış zamanı kaydet

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

Burada
$client->setAccessToken($token); 

    if($client->isAccessTokenExpired()){ 

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

i var hata

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

belirteç yenilemek için HwiAuthBundle yöntem yoktur? Neden bu Google_Client yenilemesiyle çalışmıyor?

+0

değil: Sana bir oauth istemci kimliği oluşturmak da gerek? Müşteri kimliği, kullandığınız yenileme jetonunu oluşturmak için kullanılan Google geliştirici konsolundan gelen müşteri kimliğidir. – DaImTo

+1

Bu ileti dizisini henüz görmediyseniz, yenileme jetonlarını bu paket için daha düşük bir önceliğe sahip olarak görüyor gibi görünüyor: https://github.com/hwi/HWIOAuthBundle/issues/457 Dolayısıyla, toplam tak ve çalıştır çözümü, bu değil. –

cevap

-2

Amigo sizi üzdüğümüz için üzgünüm, ama paketin herhangi bir Yenile Jetonu işlevselliğini uygulamadığı anlaşılıyor. Ya da sana kalmış.

Bu özellik mevcutsa, bunun için henüz hiç kolay kullanım yapmanız gerekiyorsa olarak vardır: İşte

https://github.com/hwi/HWIOAuthBundle/issues/457 sayısından bir yorumun:

İşte onların GitHub'dan açık sorunu, bir göz var var ile ilgili her şeyi kendiniz yapın (jetonla ilgili daha fazla bilgi depolamak, son kullanma tarihini saptamak, Google'ı yeni jeton almak için çağırmak ve eski değiştirilmesi), yalnızca şu paketten yardım almak için kodunun Google'a sormanıza izin verir yeni taze jeton için:nasıl onlara göstermek) = bir Gist'e orada bekleyen içinde

İnsanlar kod (snippet)GenericOAuth2ResourceOwner :: refreshToken(), beklenen olarak çalışması gerekir, ancak ben uzun zamandır bu paket kullanmadıysanız Bunu yapmak için, ama şimdiye kadar hiçbir şey.

Eğer bitiş noktasına göndermek gerekir süresi dolmuş bir erişim belirteci yenilemek için OAuth2.0 olarak
+0

Tamamen doğru değil. Bir belirteci yenilemek için [bir yöntem] (https://github.com/hwi/HWIOAuthBundle/blob/0.5.3/OAuth/ResourceOwner/GenericOAuth2ResourceOwner.php#L107) özelliği vardır, ancak nasıl kullanılacağı belgelenmez o. Belgelere ek olarak iyi bir örnek istiyorum. –

+1

Bu bağlantı soruyu yanıtlayabilirken, cevabın temel kısımlarını buraya dahil etmek ve referans için bağlantı sağlamak daha iyidir. Bağlantılı sayfa değiştiğinde yalnızca bağlantı yanıtları geçersiz olabilir. - [Yorum yazıla] (/ review/düşük kaliteli yazılar/17379223) –

+0

Cheers Donald, biraz güncellendi. – delboy1978uk

1

:

  • hibe tipi
  • 'refresh_token' eşittir geçerli bir refreshToken
  • sizin clientId
  • ve sizin istemciSecret

Yeni bir refr almak için süresi dolmuş bir accessToken gönderemezsiniz eshed accessToken.

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

fonksiyonu refreshAccessToken ($ refreshToken ...

değil $ accessToken

Sana sonra ara

$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

size $client->setClientId($this->user->getGoogleId()); emin misiniz sizin kimlik bilgileriyle müşteri inşa etmek gerektiğini düşünüyorum

? getGoogleId() nedir? oauth client_id olarak https://developers.google.com/identity/sign-in/web/devconsole-project

kullanıcı kimliği ancak uygulamanın kimliği getGoogleId ne

+0

Paket zaten bir jetonu yenilemek için bir yönteme sahiptir: [GenericOAuth2ResourceOwner :: refreshToken()] (https://github.com/hwi/HWIOAuthBundle/blob/0.5.3/OAuth/ResourceOwner/GenericOAuth2ResourceOwner.php#L107), ancak iş akışında bunu nasıl uygulayacağına dair bir belge yoktur (https://github.com/hwi/HWIOAuthBundle/blob/master/Resources/doc/4-integrating_fosub.md) –

+0

evet ama bu refreshAccessToken yönteminin ilk parametresinde bir refreshToken ve bir accessToken geçmemesi gerektiğini açıkça belirtir. oauth 2.0'da bir erişim belirtecini yenilemek için geçerli bir yenileme jetonu göndermeniz gerekir: grant_type 'refresh_token' ve istemci kimliğiniz ve gizli kimliğiniz –

+0

Yanıtımı işaretler misiniz? meslektaşlarımla küçük bir yarışma yapıyorum bazı noktalara ihtiyacım var. Teşekkürler ! –