Я пытаюсь загрузить файл изображения в библиотеку фотографий, используя C #.
Используемые области: https://www.googleapis.com/auth/photoslibrary https://www.googleapis.com/auth/photoslibrary.appendonly
Я создаю uploadToken, используя ниже:
FileStream fS = new FileStream(fullPath, FileMode.Open, FileAccess.Read);
byte[] b = new byte[fS.Length];
fS.Read(b, 0, (int)fS.Length);
fS.Close();
var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://photoslibrary.googleapis.com/v1/uploads");
httpWebRequest.ContentType = "application/octet-stream";
httpWebRequest.Headers.Add("Authorization:" + "Bearer " + auth_Token);
httpWebRequest.Headers.Add("X-Goog-Upload-File-Name:" + imageName);
httpWebRequest.Headers.Add("X-Goog-Upload-Protocol:" + "raw");
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
streamWriter.Write(b);
streamWriter.Flush();
streamWriter.Close();
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
Здесь я успешно получаю uploadToken.После этого я приступил к созданию mediaItem, как показано ниже:
httpWebRequest = (HttpWebRequest)WebRequest.Create("https://photoslibrary.googleapis.com/v1/mediaItems:batchCreate");
httpWebRequest.ContentType = "application/json";
httpWebRequest.Headers.Add("Authorization:" + "Bearer " + auth_Token);
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string albumID = "someid";
string itemDesc = "somedesc";
string jsonString = "{\"albumId\": \"" + albumID + "\",\"newMediaItems\": [{ \"description\": \"" + itemDesc + "\", \"simpleMediaItem\": { \"uploadToken\": \"" + uploadToken + "\" }}]}";
streamWriter.Write(jsonString);
streamWriter.Flush();
streamWriter.Close();
}
httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
Теперь в качестве ответа я получаю:
status ": {" code ": 3," message ": "NOT_IMAGE: при попытке создать этот элемент мультимедиа произошла ошибка."}
Я много гуглил, но не смог найти никакого решения для этой проблемы ИЛИ какого-либо блока кода для mediaUpload с помощью Google PhotosБиблиотечный API с примером.
Пожалуйста, подскажите, где я делаю что-то не так.
- неверный способ чтения / записи файловых байтов?
- использование строк Json и записьнеправильно?
Пожалуйста, помогите мне. Спасибо.