2013-06-12 21 views
5

我試圖放大'expires_in'(來自憑證對象,現在是3600秒)的值,因爲我想允許用戶長時間使用我的應用程序。我正在使用刷新令牌,但只有在用戶經常使用應用程序時才刷新。Google OAuth2 - 如何更改expires_in或token_expiry值?

如果您知道如何更改token_expiry日期 - 我也對該解決方案感興趣。

感謝您的任何提示。

回答

8

出於安全原因,過期時間很短,不能更改。但是,您可以擴展用戶的授權,而無需使用refresh_token與用戶交互。基本上,作爲授權碼交換的響應,服務器提供refresh_token看起來像這樣:

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

當令牌過期時,所有你所要做的就是用refresh_token重新授權,而無需用戶交互。就像這樣:

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,你甚至不必關心refresh_token如果您正在使用Credentials class從谷歌的API的Python客戶端。只需使用Credentials.authorize(),它將根據您的狀態自動授權或刷新令牌。

+0

謝謝!這很有幫助,這也是Google提供刷新請求的地方:https://developers.google.com/identity/protocols/OAuth2WebServer#offline – JJC