我有一个使用 Google Drive 访问用户文件的 .NET 应用程序。我能够获得授权码,并且我已经能够通过 AccessToken 和 RefreshToken 交换授权码。问题是我无法刷新访问令牌,并且它会在一小时后过期。
类似于这个问题:How to generate access token using refresh token through google drive API? 除了我在 .NET 中工作(使用 Google.API... DLL)。
我知道这一点:https ://developers.google.com/accounts/docs/OAuth2InstalledApp#refresh但是,我期待 IAuthorizationState 或 OAuth2Authenticator 对象中提供某种方法来允许我刷新访问令牌。
请指教。谢谢。
请注意,使用此代码我可以获得访问令牌。只是我希望这段代码在 Google API 中。
public class OAuth2AccessTokenReponse
{
public string access_token;
public int expires_in;
public string token_type;
}
public static string refreshAccessToken()
{
using (System.Net.WebClient client = new System.Net.WebClient())
{
byte[] response = client.UploadValues("https://accounts.google.com/o/oauth2/token", new System.Collections.Specialized.NameValueCollection(){
{"client_id", ClientID},
{"client_secret", ClientSecret},
{"refresh_token", "XXXXX"},
{"grant_type", "refresh_token"}
});
string sresponse = System.Text.Encoding.Default.GetString(response);
OAuth2AccessTokenReponse o = (OAuth2AccessTokenReponse) Newtonsoft.Json.JsonConvert.DeserializeObject(sresponse, typeof(OAuth2AccessTokenReponse));
return o.access_token;
}
}