8

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;        
        }
    }
4

2 に答える 2

0

.NET クライアント ライブラリ (http://code.google.com/p/google-api-dotnet-client/) を使用している場合は、そのことに注意する必要はありません。ライブラリは、必要に応じて、最初に取得した更新トークンを使用して、新しいアクセス トークンを自動的に要求します。

于 2012-07-12T19:29:11.160 に答える