【问题标题】:403 forbidden exception in accessing access token访问访问令牌时出现 403 禁止异常
【发布时间】:2013-12-29 04:51:18
【问题描述】:

当来自 Google 的访问令牌过期时,我正在尝试生成新的访问令牌。但是在我的生产服务器上,我遇到了下面提到的异常:

Exception:
at System.Net.HttpWebRequest.GetResponse() at System.Net.HttpWebRequest.GetResponse() at     
GoogleCalendarProvider_V3.ExchangeCodeWithAccessAndRefreshToken(String RefreshToken)

Exception Message:
The remote server returned an error: (403) Forbidden.

我正在创建一个 http Web 请求以获取访问令牌。请检查以下代码

string Url = "https://accounts.google.com/o/oauth2/token";
    string grant_type = "refresh_token";
    string data = "client_id={0}&client_secret={1}&refresh_token={2}&grant_type={3}";

        HttpWebRequest request = HttpWebRequest.Create(Url) as HttpWebRequest;
        string result = string.Empty;
        request.Method = "POST";           
        request.KeepAlive = true;
        request.ContentType = "application/x-www-form-urlencoded";                    
        string param = string.Format(data, ClientID, ClientSecret, RefreshToken, grant_type);
        request.Credentials = CredentialCache.DefaultCredentials;
        var bs = Encoding.UTF8.GetBytes(param);
        using (Stream reqStream = request.GetRequestStream())
        {
            reqStream.Write(bs, 0, bs.Length);
        }
        using (WebResponse response = request.GetResponse())
        {
            var sr = new StreamReader(response.GetResponseStream());
            result = sr.ReadToEnd();
            sr.Close();
        }

请在这方面帮助我。

【问题讨论】:

  • 在这里我也使用了线程的概念。在这个多个线程可以访问谷歌日历以获取访问令牌。和这个问题有关系吗

标签: google-calendar-api access-token webrequest


【解决方案1】:

看看这个问题Youtube API C# OAuth token exchange for access_token returns invalid request

看起来是一个类似的问题。

【讨论】:

  • 感谢您的回复。实际上我发送了正确的请求,但是在 50 次执行中,我得到了 403 Forbidden 的异常。否则它运行良好。我已经尝试了您告诉我的过程,但仍然遇到同样的问题。当我使用线程发送太多请求时出现 403 异常。
  • 很可能403禁止实际上是一个节流异常。我在 Drive 上遇到了类似的问题,给我一个 403 Rate Limit Exceeded。为了避免这个问题,我必须将我的云端硬盘事务减慢到
  • 我如何检查它是速率限制异常还是其他什么。那么如果它抛出异常,我应该让线程休眠吗?。
  • 我只能建议放慢 API 调用速度,看看问题是否得到解决。当您收到 403 时,您是否会以指数方式退避并重试,并且重试是否有效?
  • 使用指数退避后的事件仍然遇到同样的问题。实际上我有 20 个帐户,在每个帐户中我有 20 个日历,所以意味着我一次执行 400 个日历(400 个执行到 Google 日历),所以有时它运行良好,有时它抛出异常。所有 20 个帐户都在线程中。
猜你喜欢
  • 2019-06-29
  • 2015-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多