I ran into the same problem and tried the answer suggested by Vadim Gremyachev. However, it still kept error 403. I added two additional headers for force forms-based authentication, as shown below:
client.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f"); client.Headers.Add("User-Agent: Other");
After that, he began to work. Thus, the complete code is as follows:
const string username = " username@tenant.onmicrosoft.com "; const string password = "password"; const string url = "https://tenant.sharepoint.com/"; var securedPassword = new SecureString(); foreach (var c in password.ToCharArray()) securedPassword.AppendChar(c); var credentials = new SharePointOnlineCredentials(username, securedPassword); DownloadFile(url,credentials,"/Shared Documents/Report.xslx"); private static void DownloadFile(string webUrl, ICredentials credentials, string fileRelativeUrl) { using(var client = new WebClient()) { client.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f"); client.Headers.Add("User-Agent: Other"); client.Credentials = credentials; client.DownloadFile(webUrl, fileRelativeUrl); } }
blackspacer
source share