Получить токен доступа из API коробки из приложения asp.net?

У меня есть код авторизации, идентификатор клиента, секрет клиента, и теперь, чтобы загрузить файл в мою учетную запись, мне нужен ТОКЕН ДОСТУПА. Я использую приведенный ниже код, скопированный где-то в stackoverflow, чтобы получить ТОКЕН ДОСТУПА.

public string GetAccessToken(string code, string ClientId, string ClientSecret)
    {
        RestClient rs = new RestClient();
        string grant_type = "authorization_code";
        RestRequest request = new RestRequest(Method.POST);
        IRestRequest reuest = request;
        string strHeaders = null;
        RestResponse response = default(RestResponse);
        IRestResponse resp = response;
        string strResponse = null;

        try
        {
            rs.BaseUrl = "https://www.box.com/api/oauth2/token";
            request.Resource = "oauth2/token";
            strHeaders = string.Format("grant_type={0}&code={1}&client_id={2}&client_secret={3}", grant_type, code, ClientId, ClientSecret);
            request.AddHeader("Authorization", strHeaders);
            resp = rs.Execute(reuest);
            strResponse = resp.Content;

            return strResponse;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

Тип содержимого ответа — HTML, а не JSON, как указано на странице документации. Не могли бы вы помочь мне, как получить токен доступа из BOX API с помощью приложения asp.net?


person good-to-know    schedule 27.11.2016    source источник
comment
Какой HTML-ответ вы получите. Посмотрите, т.к. это может быть сообщение об ошибке. Вы получаете код успешного ответа?   -  person Peter Bons    schedule 27.11.2016
comment
Да. Получение кода успешного ответа.   -  person good-to-know    schedule 27.11.2016


Ответы (1)


Ниже фрагмент кода сделал работу:

        public string GetAccessToken()
        {
        string param = string.Format("grant_type=authorization_code&code={0}&client_id={1}&client_secret={2}", CODE, CLIENT_ID, CLIENT_SECRET);

        var client = new RestClient("https://api.box.com/oauth2/token/");
        var request = new RestRequest(Method.POST);
        request.AddHeader("content-type", "application/x-www-form-urlencoded");
        request.AddParameter("application/x-www-form-urlencoded", param, ParameterType.RequestBody);
        var response = client.Execute(request);
        var json = JObject.Parse(response.Content);

        return Convert.ToString(json["access_token"]);
        }

Пожалуйста, обратите внимание на заголовок и параметр, которые я добавил в код.

person Mohamed Thaufeeq    schedule 12.12.2016