I faced the same crash and found out a solution. It seems that the client gets this failure also if the underlying request is a bad request but the response information is not explicitly provided (my authorizer is valid and passes the check using the canAuthorize method as Ryan_IRL ).
After looking at the library, I found that setting up the STRIP_GTM_FETCH_LOGGING preprocessor STRIP_GTM_FETCH_LOGGING and enabling logging for HTTPFetcher somewhere in the code
#if STRIP_GTM_FETCH_LOGGING [GTMHTTPFetcher setLoggingEnabled:YES]; #endif
Logs are stored in the GTMHTTPDebugLogs folder inside the simulator (something similar to /Users/<username>/Library/Application Support/iPhone Simulator/6.1/Applications/65451CDB-27D6-4BE2-910C-7F22D6A01832/GTMHTTPDebugLogs ). There you can find the full log in HTML format (...).

By clicking on the "request / response log", in my case, the following log was shown.
Response body: (201 bytes) { "id" : "gtl_1", "error" : { "message" : "Bad Request", "code" : -32602, "data" : [ { "domain" : "youtube.video", "reason" : "invalidTitle", "locationType" : "other", "location" : "body.snippet.title", "message" : "Bad Request" } ] } }
a bad request was associated with a heading (downloadable video) containing some forbidden characters. The title correction resolved to crash and the video was uploaded correctly. Status 200 in this case, of course ... is disappointing and clearly wrong.
I am also very disappointed with the GTM library and the use of NSAssert for such a situation in the first place.
source share