Home > Mobile >  OneDrive upload files with REST API via resumable session
OneDrive upload files with REST API via resumable session

Time:12-15

Hi there currently I am trying to make files uploading to one drive trough REST API. But every time I am getting Exception with 401 code for non authorized

The remote server returned an error: (401) Unauthorized.

My code snippet

public async Task<string> UploadFileAsync(Account account, StorageFile file)
{
    var publicClientApplication = PublicClientApplicationBuilder.Create(MicrosoftConstants.ClientId)
               .WithRedirectUri(MicrosoftConstants.RedirectUri)
               .Build();

    var scopes = new string[]
    {
        "files.readwrite.all"
    };

    AuthenticationResult authToken = null;

    try
    {
        authToken = await publicClientApplication.AcquireTokenInteractive(scopes).ExecuteAsync();
    }
    catch (Exception)
    {              
    }

    if (authToken != null)
    {
        var postData = new
        {
            item = new
            {
                name = file.Name
            }
        };

        var json = JsonConvert.SerializeObject(postData);

        var request = (HttpWebRequest)WebRequest.Create($"https://graph.microsoft.com/v1.0/me/drive/items/root:/{file.Name}:/createUploadSession");
        request.Method = "POST";
        request.ContentType = "application/json";
        request.ContentLength= json.Length;
        request.Headers["Authorization"] = "bearer"   authToken.AccessToken;

        using (var requestStream = await request.GetRequestStreamAsync())
        using (var streamWriter = new StreamWriter(requestStream))
        {
            streamWriter.Write(json);
        }

        var response = (HttpWebResponse)await request.GetResponseAsync();
    }

    return string.Empty;
}

Do anybody know what am I doing wrong?

CodePudding user response:

To make it work I had to change header with authorization to

request.Headers["Authorization"] = "Bearer " authToken.AccessToken;

  • Related