403 запрещенное исключение при доступе к токену доступа

Я пытаюсь создать новый токен доступа, когда срок действия токена доступа от 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, чтобы получить токен доступа. пожалуйста, проверьте приведенный ниже код для этого

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();
        }

пожалуйста, помогите мне в этом контексте.


person Himanshu Jain    schedule 05.11.2013    source источник
comment
В этом я также использую концепцию потоковой передачи. В этом несколько потоков могут получить доступ к календарю Google для токена доступа. Это связано с этим вопросом   -  person Himanshu Jain    schedule 07.11.2013


Ответы (1)


Посмотрите этот вопрос Обмен токенов OAuth API C# YouTube на access_token возвращает неверный запрос

Похоже похожая проблема.

person pinoyyid    schedule 07.11.2013
comment
Спасибо за ответ. На самом деле я отправляю правильный запрос, но один раз из 50 выполнения я получаю исключение 403 Forbidden. В противном случае он работает нормально. Я попробовал процесс, который вы мне сказали, но все еще получаю ту же проблему. Я получаю исключение 403, когда отправляю слишком много запросов с использованием потоков. - person Himanshu Jain; 08.11.2013
comment
Вполне может быть, что запрет 403 на самом деле является исключением регулирования. У меня похожие проблемы с Диском, который дает мне 403 Rate Limit Exceeded. Я должен замедлить свои транзакции на Диске до ‹ одной транзакции в 3 секунды, чтобы избежать проблемы. - person pinoyyid; 08.11.2013
comment
как я могу проверить, что это исключение ограничения скорости или что-то еще. Так должен ли я спать в потоке, если он выдает исключение? - person Himanshu Jain; 08.11.2013
comment
все, что я могу предложить, это замедлить вызовы API и посмотреть, решена ли проблема. Когда вы получаете 403, вы экспоненциально откладываете и повторяете попытку, и повторная попытка работает? - person pinoyyid; 08.11.2013
comment
Событие после использования экспоненциальной отсрочки по-прежнему вызывает ту же проблему. На самом деле у меня 20 учетных записей, и в каждой учетной записи у меня есть 20 календарей, поэтому за один раз я выполняю 400 календарей (400 выполнений для календаря Google), поэтому иногда все идет нормально, а иногда выдает исключение. все 20 аккаунтов в тредах. - person Himanshu Jain; 08.11.2013
comment
Звучит очень похоже на проблему, с которой я пытаюсь выполнить несколько одновременных обновлений Диска. Единственное решение, которое я нашел, — это снизить скорость вызовов API. - person pinoyyid; 08.11.2013
comment
Теперь я попытаюсь сделать некоторые потоки сна в своем коде. Спасибо большое за вашу помощь. - person Himanshu Jain; 08.11.2013