Youtube:多帐户身份验证(OAuth),用于将视频上传到单个帐户/频道

时间:2014-07-22 07:09:02

标签: ios objective-c oauth-2.0 youtube-api unauthorized

我正在从iOS应用程序集成视频上传到Youtube。

遵循的步骤:

  1. 创建了Google帐户,并在开发者控制台中为该帐户启用了Youtube数据API。
  2. 创建了客户端ID和客户端密钥,并将其合并到应用程序中。
  3. 检查 Google API objective C client 以获取Youtube上传通常是一个MAC工具,我刚刚修改为iOS。
  4. 运行该应用程序。
  5. 将提示登录(OAuth)。
  6. 案例#1

    • 使用相同的帐户登录,用于创建客户端ID和 客户秘密。
    • 接受范围并将授权人分配给Youtube服务。
      

    GTMOAuth2ViewControllerTouch:   completionHandler:^(GTMOAuth2ViewControllerTouch * viewController,   GTMOAuth2Authentication * auth,NSError *错误)
      {

         

    self.youTubeService.authorizer = auth;

         

    }

    • 开始上传,工作正常。

    案例#2

    • 使用其他帐户登录。
    • 接受范围并将授权人分配给Youtube服务。
      

    GTMOAuth2ViewControllerTouch:   completionHandler:^(GTMOAuth2ViewControllerTouch * viewController,   GTMOAuth2Authentication * auth,NSError *错误)
      {

         

    self.youTubeService.authorizer = auth;

         

    }

    • 开始上传并导致:错误域= com.google.GTLJSONRPCErrorDomain代码= -32602"无法完成操作。 (未授权)" UserInfo = 0x986abe0 {error = Unauthorized,GTLStructuredError = GTLErrorObject 0x98528d0:{message:" Unauthorized"代码:-32602数据:1},NSLocalizedFailureReason =(未经授权)}

    enter image description here

    注意:如果我使用相同的帐户(用于创建客户端ID和密码)来登录和上传,它工作正常,视频显示在Youtube中。 但是,每当尝试使用其他帐户上传时,即使在 Google API目标C客户端应用程序中也会导致问题。

    如果我遗漏了其他任何需要考虑的案例,请告诉我。 感谢。

2 个答案:

答案 0 :(得分:1)

您可能正在使用Auth错误,或者用户可能没有有效的连接YouTube频道。 您可以查看YouTube Direct Lite for iOS project for the best example

答案 1 :(得分:0)

经过一天的搜索/测试,终于找到了原因。 我的OAuth流程没有任何问题。 原因是其他多个帐户(不是用于创建客户端ID和客户端密钥的帐户)在Youtube中没有通道。

解决方案: 如果用户帐户是Youtube的新用户,那么youtube将无法拥有该帐户的频道。 用户需要创建一个(这很容易,Youtube本身将提醒创建新频道,我的频道从左侧窗格被选中)

如果用户帐户有有效频道,则上述" 未授权"错误不会发生。