2015-10-31 2 views
0

Я пытаюсь использовать REST API в своем приложении, но я не могу заставить его работать.OneDrive REST API Post call Bad Request

Я получил код авторизации и сохранил его. (с разрешением wl.offline_access)

Я хочу войти в OneDrive и загрузить файлы в фоновом режиме, поэтому мне нужно обновить токен. Затем я делаю POST-вызов, чтобы получить токен обновления, но он не работает. Что я делаю не так?

Вот мой код.

var data = "client_id=CLIENT_ID&redirect_uri=https://login.live.com/oauth20_desktop.srf&client_secret=CLIENT_SCRET&code=AUTHORIZATION_CODE&grant_type=authorization_code"; 
data = Uri.EscapeDataString(data); 

var webClient = new WebClient 
{ 
    Headers = 
    { 
     [HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded" 
    } 
}; 

webClient.UploadStringCompleted += (sender, e) => 
{ 
    // e.Result throws an exception of type 'System.Reflection.TargetInvocationException' 
    // e.Error = {"The remote server returned an error: NotFound."} 
    // e.Error.Response.StatusCode = BadRequest 
    // e.Error.Response.Headers = {Cache-Control: no-store 
    //        Pragma: no-cache 
    //        Content-Length: 113 
    //        Content-Type: application/json 
    //        Server: Microsoft-IIS/8.5 
    //        X-WLID-Error: 0x80049D58 
    //        X-Content-Type-Options: nosniff 
    //        Date: Sat, 31 Oct 2015 20:22:04 GMT 
    //        Connection: close} 
}; 

var uri = new Uri("https://login.live.com/oauth20_token.srf",UriKind.Absolute); 
webClient.UploadStringAsync(uri, "POST", data); 
+0

* Затем я делаю запрос POST, чтобы получить токен обновления, но он не работает. * Доказательство? – Will

ответ

0

Код, полученный во время потока кода, недействителен в течение длительного периода времени. То, что вы хотите сделать, это сохранить токен обновления, возвращенный вызовом POST выше, сразу после получения кода. Затем вы можете использовать этот токен обновления, чтобы получить токен доступа в автономном режиме. Обновить токены действительны в течение одного года, и каждый раз, когда вы извлекаете новый токен доступа, вы получите новый. У OneDrive code flow documentation есть дополнительная информация.