当前位置: 首页 > 知识库问答 >
问题:

如何通过。NET中的Google Drive SDK使用刷新令牌生成访问令牌?

叶鸿煊
2023-03-14

我有一个。NET应用程序,正在使用谷歌驱动器访问用户的文件。我能够获得授权代码,并且能够通过AccessToken和RefreshToken交换授权代码。问题是我无法刷新访问令牌,它在一小时后过期。

请指教。谢了。

请注意,使用此代码,我能够获得访问令牌。只是我希望这段代码在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;        
        }
    }

共有1个答案

缑桐
2023-03-14

如果您使用的是。NET客户机库(http://code.google.com/p/google-api-dotnet-client/),则不必处理这些问题。当需要时,库将使用第一次检索的刷新令牌自动为您请求一个新的访问令牌。

 类似资料:
  • 我已经完成了授权步骤,并获得了访问令牌和刷新令牌。

  • 当我试图在访问令牌过期之前使用刷新令牌生成访问令牌时,系统会生成一个新令牌,并且一切正常。但是如果访问令牌过期,则请求返回。 中的方法不是使用我从以前的访问令牌中存储在字典中的标识生成访问令牌吗? 如果上一个更新令牌尚未过期,如何阻止客户端使用相同的刷新令牌请求新的访问令牌? oauthProvider.cs: RefreshTokenProvider.cs: 对不起,英语不好,希望你能理解!

  • https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=your_app_client_id&response_type=code&redirect_uri=https%3a%2f%2flogin.microsoftonline.com%2fcommon%2foauth2%2fnativeclient&res

  • 我有访问令牌和刷新令牌。但是访问令牌过期后几个时间,所以我想从刷新令牌为谷歌驱动器API生成访问令牌。所以给我的想法或代码,从谷歌驱动器API刷新令牌生成访问令牌。

  • 我正在使用Cognito用户池对系统中的用户进行身份验证。成功的身份验证将提供一个ID令牌(JWT)、一个访问令牌(JWT)和一个刷新令牌。这里的文档清楚地提到了刷新令牌可以用于刷新访问令牌,但没有提到如何使用。我的问题是,一旦我的访问令牌过期,我如何使用存储的刷新令牌再次刷新我的访问令牌? 我搜索了JavaScript SDK,但找不到任何方法来做同样的事情。我肯定错过了什么。 我还想通过Lam