将照片上传到Google Photos API-错误500

时间:2018-07-29 02:37:09

标签: ajax filereader google-photos google-photos-api

按照the docs

尝试将媒体上传到Google Photos API时出现以下错误

Google Photos API Error

这是我检索字节数组的方式:

Retrieve bytes array

这就是我发出请求的方式:

enter image description here

我尝试了很多事情,但都无济于事...

注意:我正在使用其他Google Photos API端点,例如“获取相册”,“创建相册”,“获取媒体”,并且一切正常。上传媒体是我遇到的唯一问题。

注意2::令牌发送正确。

注意3::所有原始端点都已在Google控制台(包括localhost)中进行了配置,以至于其他端点正常工作。

任何人都可以给我一点光吗?

1 个答案:

答案 0 :(得分:0)

我正在用C#编写类似的东西,并且能够使用photo api。我最好的建议是仔细检查标题。希望对您有所帮助,此外,我还添加了成功调用api的邮递员屏幕截图:

public async Task<GoogleApiResponse> UploadPhoto(StorageFile photo)
        {
            var userInfo = UserInfoVault.GetUserInfo();
            HttpClient client = new HttpClient();
            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", userInfo.AccessToken);
            client.DefaultRequestHeaders.Add("X-Goog-Upload-File-Name", photo.DisplayName);

            var fileStream = await photo.OpenAsync(FileAccessMode.Read);
            var reader = new DataReader(fileStream.GetInputStreamAt(0));
            await reader.LoadAsync((uint)fileStream.Size);
            byte[] pixels = new byte[fileStream.Size];
            reader.ReadBytes(pixels);

            var httpContent = new ByteArrayContent(pixels);
            httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");

            HttpResponseMessage photoResponse = client.PostAsync(ApiEdnpoints.UploadPhoto, httpContent).Result;
            string strResponse = await photoResponse.Content.ReadAsStringAsync();

            return null;
        }

Postman screenshot of successful call to upload a photo