我建議你在數據庫中創建一個表來存儲刷新令牌和訪問令牌。 表的結構將類似於下面
ID,ACCESS_TOKEN,Refresh_Token,LastUpdated_Time
當你調用訪問令牌的API,請檢查當前時間和LastUpdated_Time令牌,如果是超過一小時您的令牌將變爲無效,因此您需要使用刷新令牌獲取另一個有效令牌。 在我的申請中,我有55分鐘的toke壽命,此後令牌無效。
代碼
if (dateTimeDiff > 55) {
var request = (HttpWebRequest) WebRequest.Create("https://www.googleapis.com/oauth2/v3/token");
var postData = "refresh_token=your refresh token";
postData += "&client_id=your client id";
postData += "&client_secret=your client secret";
postData += "&grant_type=refresh_token";
var data = Encoding.ASCII.GetBytes(postData);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
request.UseDefaultCredentials = true;
using(var stream = request.GetRequestStream()) {
stream.Write(data, 0, data.Length);
}
var response = (HttpWebResponse) request.GetResponse();
string responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
}
的響應將包含新的訪問令牌,不要忘了LastUpdated_Time
和新的令牌來更新表格。
嗨安迪,我正在尋找同樣的解決方案 - 在客戶端存儲訪問令牌和刷新令牌。你有這樣做的解決方案嗎? – Jenan