YouTube API v3样例项目引发GTLJSONRPCErrorDomain -32602错误请求



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

我用Google api注册了一个项目,并为安装的应用程序创建了一个客户端ID,选择iOS并输入示例代码的Bundle ID, com.example.YouTubeSample。我把App Store ID设置为空白,并且禁用了深度链接。

我将得到的客户端ID和客户端秘密输入到示例应用程序中。我也通过应用程序的窗口登录了谷歌,它告诉我我已经登录了。

我独立地去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,用于类型为"other"的安装应用程序。)我将这个新的ID和secret输入到示例应用程序中,当我上传。mov文件时,我得到了相同的错误。)

在API控制台中,我看到一个错误报告,显示一些新的错误代码400s。

我做错了什么?

谢谢!

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"}
)

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

快乐的日子!

相关内容

  • 没有找到相关文章

最新更新