我刚刚下载了Google API 目标 C 客户端 https://code.google.com/p/google-api-objectivec-client/source/checkout。我在 Mac 上的 Xcode 中打开了 YouTube 示例项目。它构建并运行没有错误。
我注册了一个项目谷歌API https://code.google.com/apis/console,并为已安装的应用程序创建客户端 ID,选择 iOS 并输入示例代码的捆绑 ID com.example.YouTubeSample。我将 App Store ID 留空并禁用深度链接。
我将生成的客户端 ID 和客户端密钥输入到示例应用程序中。我也通过应用程序的窗口登录了 Google,它告诉我我已登录。
我独立地去了 YouTube 并上传了一个 1Mb .mov 文件,该文件上传得很好(尽管它告诉我可能存在音频/视频同步问题)。
然后我通过示例应用程序上传了相同的文件。完成后,它给了我错误:
Error Domain=com.google.GTLJSONRPCErrorDomain Code=-32602
"The operation couldn’t be completed. (Bad Request)"
UserInfo=0x.... {error=Bad Request, NSLocalizedFailureReason=(Bad Request),
GTLStructuredError=GTLErrorObject 0x...:
{message:"Bad Request" data:[1] code:-32602}}
(由于示例应用程序适用于 Mac OS,而不是 iOS,因此我还尝试在 Google API 中为“其他”类型的已安装应用程序创建第二个客户端 ID。我将这个新 ID 和密码输入到示例应用程序中,当我上传了 .mov 文件,我遇到了同样的错误。)
在 API 控制台中,我看到一个错误报告,其中显示了一些新的错误代码 400。
我做错了什么?
thanks!
YouTube API 将“结构化错误”对象打包在NSError
它返回的对象。结构性错误是GTLErrorObject
可以检查以查找错误原因:
uploadTicket = [service executeQuery:query
completionHandler:^(GTLServiceTicket* ticket, id object, NSError* error) {
if (error) {
GTLErrorObject* const errorObject = error.userInfo[kGTLStructuredErrorKey];
NSLog(@"error from YouTube API: %@", errorObject.data);
}
...
}];
示例输出(为了清晰起见,进行了格式化):
error from YouTube API: (
GTLErrorObjectData 0x7fb0c4cc9f10: {
message:"Bad Request"
locationType?:"other"
reason:"invalidCategoryId"
domain:"youtube.video"
location:"body.snippet.categoryId"}
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)