3

我刚刚下载了Google API 目标 C 客户端。我在 Mac 上的 Xcode 中打开了 YouTube 示例项目。它构建和运行没有错误。

我使用Google API注册了一个项目,并为已安装的应用程序创建了一个 Client ID,选择 iOS 并输入示例代码的 Bundle 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。

我做错了什么?

谢谢!

4

2 回答 2

1

NSErrorYouTube API 在它返回的对象中打包了一个“结构化错误”对象。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"}
)
于 2015-02-18T14:22:54.530 回答
0

我刚刚退出并重新启动了 Xcode 和示例项目,它工作了(使用 iOS 客户端 ID,我还没有尝试过另一个)。

快乐的时光!

于 2013-06-05T03:54:19.493 回答