Search code examples
youtube-apigdatagdata-api

Service Exception


I am trying to upload a video to youtube from an iPhone "installed application" with GData for ObjectiveC.

Currently I receive an error on my upload ticket: ServiceException - error code 500.

From the documentation I cannot figure out what this error means and what I am doing wrong:

500 (Internal error) - A 500 response code indicates that YouTube experienced an error handling a request. You could retry the request at a later time.

I received only this error for more then a week (so this is not a temporary outage) and I've tryied with different product registrations for the Youtube API.

Can anyone spot what I am doing wrong in my request ?

Below you can find the log from GData's GTMHttpDebugLogs:

uploadTicket:finishedWithEntry:error:

2012-10-18 17:13:26 +0000
Request: POST https://uploads.gdata.youtube.com/resumable/feeds/api/users/default/uploads
Request headers:
  Accept: application/atom+xml, text/xml
  Authorization: AuthSub token=<authorization subtoken refreshed every time>
  Cache-Control: no-cache
  Content-Length: 793
  Content-Type: application/atom+xml; charset=utf-8
  GData-Version: 2.0
  Slug: video-filename.mp4
  User-Agent: <bundle>/2.0.0 GData-ObjectiveC/1.12 iPhone/5.1 (gzip)
  X-GData-Key: key=<my developer key
  X-Upload-Content-Length: 4005670
  X-Upload-Content-Type: video/mp4

Request body: (793 bytes)
<?xml version="1.0" encoding="UTF-8"?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gml="http://www.opengis.net/gml" xmlns:app="http://www.w3.org/2007/app" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:media="http://search.yahoo.com/mrss/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:yt="http://gdata.youtube.com/schemas/2007"><yt:accessControl action="list"/><media:group><media:description>Video description here</media:description><media:keywords/><media:category scheme="http://gdata.youtube.com/schemas/2007/categories.cat">Music</media:category><media:title>Video title here</media:title></media:group></entry>


Response: status 500
Response headers:
  Cache-Control: no-cache, no-store, must-revalidate
  Content-Length: 171
  Content-Type: application/vnd.google.gdata.error+xml
  Date: Thu, 18 Oct 2012 17:13:19 GMT
  Expires: Fri, 01 Jan 1990 00:00:00 GMT
  Pragma: no-cache
  Server: HTTP Upload Server Built on Oct 3 2012 16:52:30 (1349308350)
  X-GData-User-Country: US
  X-GUploader-UploadID: <### I made this upload id anonymous ###>

Response body: (171 bytes)
<errors xmlns='http://schemas.google.com/g/2005'><error><domain>GData</domain><code>ServiceException</code><internalReason>Internal Error</internalReason></error></errors>
-----------------------------------------------------------

Solution

  • This is being caused by <yt:accessControl action="list"/> in your request, which isn't a valid value. It should be something like <yt:accessControl action='list' permission='denied'/>

    That being said, the API should handle that gracefully and not return an internal server error. I'll file a bug with the relevant folks internally to fix that.