2013-06-12 22 views
5

Kullanıcının uzun bir süredir uygulamamı kullanmasına izin vermek istediğim için, 'expires_in' değerini (kimlik bilgisi nesnesinden şimdi 3600 saniyedir) genişletmeye çalışıyorum. Yenileme jetonu kullanıyorum, ancak yalnızca kullanıcı uygulamayı sıklıkla kullanıyorsa yenilenir.Google OAuth2 - expires_in veya token_expiry değerini nasıl değiştirebilirim?

token_expiry tarihini nasıl değiştireceğinizi biliyorsanız - Ben de bu çözümle ilgileniyorum.

Her türlü ipucu için teşekkür ederiz.

cevap

8

Güvenlik nedeniyle, son kullanma süresi kısadır ve değiştirilemez. Ancak, kullanıcının yetkilendirmesini refresh_token kullanan kullanıcıyla etkileşime girmeden genişletebilirsiniz. Temel olarak, doğrulama kodu alışverişi cevap olarak, sunucu şöyle refresh_token sağlamaktadır:

{ 
    "access_token" : "ya29.AHES6ZTtm7SuokEB-RGtbBty9IIlNiP9-eNMMQKtXdMP3sfjL1Fc", 
    "token_type" : "Bearer", 
    "expires_in" : 3600, 
    "refresh_token" : "1/HKSmLFXzqP0leUihZp2xUt3-5wkU7Gmu2Os_eBnzw74" 
} 

belirteç süresi dolduğunda, yapmanız gereken tüm kullanıcı etkileşimi olmadan, yeniden yetkilendirmesi refresh_token kullanmaktır. Şunun gibi:

POST /o/oauth2/token HTTP/1.1 
Host: accounts.google.com 
Content-Type: application/x-www-form-urlencoded 

client_id=21302922996.apps.googleusercontent.com& 
client_secret=XTHhXh1SlUNgvyWGwDk1EjXB& 
refresh_token=1/HKSmLFXzqP0leUihZp2xUt3-5wkU7Gmu2Os_eBnzw74 
grant_type=refresh_token 

Python kullanırken, işler daha basit hale getirmek için, hatta google-api-piton-istemciden Credentials class kullanıyorsanız refresh_token umurumda gerekmez. Sadece Credentials.authorize() kullanın ve durumunuza göre otomatik olarak yetkilendirir veya yenileme yapar.

+0

Teşekkürler! Bu yardımcı oldu ve Google, yenileme isteğini de belgeledi: https://developers.google.com/identity/protocols/OAuth2WebServer#offline – JJC