Как решить удаленный сервер вернул ошибку (403) forbidden dailymotion api C#
Поэтому я пытаюсь загрузить видео на Dailymotion с API с помощью C# и после успешной загрузки 4-5 видео я получаю исключение удаленный сервер вернул ошибку (403) запрещено пожалуйста, помогите, как решить эту проблему спасибо
Я получаю ошибку в методе публикации видео по адресу
var response = request.GetResponse();
мой код:
Что я уже пробовал:
using System; using System.Diagnostics; using System.IO; using System.Net; using System.Text; using System.Web; using Newtonsoft.Json; namespace SO_Dailymotion_Upload { class Program { static void Main(string[] args) { var accessToken = GetAccessToken(); Authorize(accessToken); Console.WriteLine("Access token is " + accessToken); var fileToUpload = @"C:\Users\Hassan\Downloads\P6090053.3gp"; Console.WriteLine("File to upload is " + fileToUpload); var uploadUrl = GetFileUploadUrl(accessToken); Console.WriteLine("Posting to " + uploadUrl); var response = GetFileUploadResponse(fileToUpload, accessToken, uploadUrl); Console.WriteLine("Response:\n"); Console.WriteLine(response + "\n"); Console.WriteLine("Publishing video.\n"); var uploadedResponse = PublishVideo(response, accessToken); Console.WriteLine(TEST); Console.WriteLine(uploadedResponse); Console.WriteLine("Done. Press enter to exit."); Console.ReadLine(); } private static UploadResponse GetFileUploadResponse(string fileToUpload, string accessToken, string uploadUrl) { var client = new WebClient(); client.Headers.Add("Authorization", "OAuth " + accessToken); var responseBytes = client.UploadFile(uploadUrl, fileToUpload); var responseString = Encoding.UTF8.GetString(responseBytes); var response = JsonConvert.DeserializeObject<UploadResponse>(responseString); return response; } private static UploadedResponse PublishVideo(UploadResponse uploadResponse, string accessToken) { Console.WriteLine(uploadResponse); var request = WebRequest.Create("https://api.dailymotion.com/me/videos?url=" + HttpUtility.UrlEncode(uploadResponse.url)+ "" ); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.Headers.Add("Authorization", "OAuth " + accessToken); var requestString = String.Format("title={0}&tags={1}&channel={2}&private={3}&published={4}", HttpUtility.UrlEncode("TEST"), HttpUtility.UrlEncode("tag1"), HttpUtility.UrlEncode("news"), HttpUtility.UrlEncode("true"), HttpUtility.UrlEncode("true")); var requestBytes = Encoding.UTF8.GetBytes(requestString); var requestStream = request.GetRequestStream(); requestStream.Write(requestBytes, 0, requestBytes.Length); var response = request.GetResponse(); Console.WriteLine(response); var responseStream = response.GetResponseStream(); Console.WriteLine(responseStream); string responseString; using (var reader = new StreamReader(responseStream)) { responseString = reader.ReadToEnd(); Console.WriteLine(responseString); } var uploadedResponse = JsonConvert.DeserializeObject<UploadedResponse>(responseString); return uploadedResponse; } private static string GetAccessToken() { var request = WebRequest.Create("https://api.dailymotion.com/oauth/token"); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; var requestString = String.Format("grant_type=password&client_id={0}&client_secret={1}&username={2}&password={3}", HttpUtility.UrlEncode(SettingsProvider.Key), HttpUtility.UrlEncode(SettingsProvider.Secret), HttpUtility.UrlEncode(SettingsProvider.Username), HttpUtility.UrlEncode(SettingsProvider.Password)); var requestBytes = Encoding.UTF8.GetBytes(requestString); var requestStream = request.GetRequestStream(); requestStream.Write(requestBytes, 0, requestBytes.Length); var response = request.GetResponse(); var responseStream = response.GetResponseStream(); string responseString; using (var reader = new StreamReader(responseStream)) { responseString = reader.ReadToEnd(); } var oauthResponse = JsonConvert.DeserializeObject<OAuthResponse>(responseString); return oauthResponse.access_token; } private static void Authorize(string accessToken) { var authorizeUrl = String.Format("https://api.dailymotion.com/oauth/authorize?response_type=code&client_id={0}&scope=read+write+manage_videos+delete&redirect_uri={1}", HttpUtility.UrlEncode(SettingsProvider.Key), HttpUtility.UrlEncode(SettingsProvider.CallbackUrl)); Console.WriteLine("We need permissions to upload. Press enter to open web browser."); Console.ReadLine(); Process.Start(authorizeUrl); var client = new WebClient(); client.Headers.Add("Authorization", "OAuth " + accessToken); Console.WriteLine("Press enter once you have authenticated and been redirected to your callback URL"); Console.ReadLine(); } private static string GetFileUploadUrl(string accessToken) { var client = new WebClient(); client.Headers.Add("Authorization", "OAuth " + accessToken); var urlResponse = client.DownloadString("https://api.dailymotion.com/file/upload"); var response = JsonConvert.DeserializeObject<UploadRequestResponse>(urlResponse).upload_url; return response; } } }