Ошибка 500 с авторизацией при потреблении службы OAuth2 RESTful через С#

Моя текущая работа - использовать RESTful API с OAuth2. В настоящее время я разработал, как получить токен доступа, и он работает нормально, в то время как я использую консоль Restro для консоли Chrome, но когда я пытаюсь сделать это из своего приложения, я всегда получаю сообщение об ошибке, которое я посылаю неверный запрос OAuth. Ниже вы можете увидеть три способа, которыми я пытался использовать API, но безуспешно. Страница всегда возвращает ошибку 500. Любая помощь будет оценена, если я пропустил что-то важное.

    var auth = "Bearer " + item.access_token;


    /* First Attempt */
    var client = new RestClient("http://<link>");
    var request = new RestRequest("sample", Method.GET);
    request.AddHeader("Authorization", auth);
    request.AddHeader("Content-Type", "application/json;charset=UTF-8");
    request.AddHeader("Pragma", "no-cache");
    request.AddHeader("User-Agent", "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36");
    request.AddHeader("Accept", "application/json");
    request.RequestFormat = DataFormat.Json;
    var response = client.Execute(request);
    var content = response.Content;





    /* Second Attempt */
    string sURL = "http://<link>/sample";

    string result = "";

    using (WebClient client = new WebClient())
    {
        client.Headers["Authorization"] = auth;
        client.Headers["Content-Type"] = "application/json;charset=UTF-8";
        client.Headers["Pragma"] = "no-cache";
        client.Headers["User-Agent"] = "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36";
        client.Headers["Accept"] = "application/json";

        byte[] byteArray = Encoding.UTF8.GetBytes(parameters);

        var result1 = client.DownloadString(sURL);
    }


    /* Third Attempt */
    var request = (HttpWebRequest)WebRequest.Create(sURL);
    request.Method = "GET";
    request.ContentType = "application/json;charset=UTF-8";
    request.Accept = "application/json";
    request.Headers["Authorization"] = auth;
    request.UserAgent = "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36";
    string content;
    HttpStatusCode statusCode;
    using (var response = request.GetResponse())
    using (var stream = response.GetResponseStream())
    {
        var contentType = response.ContentType;
        Encoding encoding = null;
        if (contentType != null)
        {
            var match = Regex.Match(contentType, @"(?<=charset\=).*");
            if (match.Success)
                encoding = Encoding.GetEncoding(match.ToString());
        }

        encoding = encoding ?? Encoding.UTF8;

        statusCode = ((HttpWebResponse)response).StatusCode;
        using (var reader = new StreamReader(stream, encoding))
            content = reader.ReadToEnd();
    }

-------- -------- EDIT

Для первой попытки я также попытался добавить аутентификацию к клиентской переменной client.Authenticator = Authenticate;, где OAuth2AuthorizationRequestHeaderAuthenticator Authenticate = new OAuth2AuthorizationRequestHeaderAuthenticator(item.access_token, item.token_type);

Ответы

Ответ 1

Код кажется правильным. Вы сделали попытки сбоя, что проблема связана с токеном, а не с кодом. Знаки указателя имеют срок годности. Таким образом, semms, как и ваш токен, истек с первого раза, когда вы его получили, используя chrome REST Console extension и когда вы написали свой код. Но странная ситуация здесь - это код ошибки 500, который вы получили. 401 - стандартный ответ, когда токен истек или не существует. 500 всегда означает ошибку сервера.