Google ドライブを使用してユーザーのファイルにアクセスする .NET アプリケーションがあります。認証コードを取得でき、AccessToken と RefreshToken で認証コードを交換できました。問題は、アクセス トークンを更新できず、1 時間後に期限切れになることです。
この質問に似ています: How to generate access token using refresh token through google drive API? 私が.NETで作業していることを除いて(Google.APIs ... 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;
}
}