401 - 请求视频馈送时令牌无效

时间:2013-10-02 17:48:26

标签: youtube-api

我因为什么错而感到茫然。在发出API请求时,我总是收到com.google.gdata.client.GoogleService$SessionExpiredException: Token invalid Token invalid

我有以下流程:

  1. 链接用户帐户
  2. 使用凭据获取视频上传条目
  3. 我用来链接用户的代码(获取我的应用程序的权限)使用JdoDataStoreFactory来持久保存用户令牌并刷新API调用之间的信息。

    当我要求用户授权我的应用时,我使用了以下范围:

    https://www.googleapis.com/auth/youtube.upload https://www.googleapis.com/auth/youtube.readonly

    使用GoogleAuthorizationCodeFlow我在请求其身份验证令牌时使用的应用程序中传递了loadCredentials来自我的应用程序的userId。然后,我将这些凭据提供给YouTubeService的{​​{1}}方法,请求提供视频Feed的网址:getFeed

    看起来像这样:

    http://gdata.youtube.com/feeds/api/users/default/uploads

    执行完毕后,我总是得到堆栈跟踪:

      

    com.google.gdata.client.GoogleService $ SessionExpiredException:Token   无效令牌无效

    令牌无效

    错误   401

         

    在   com.google.gdata.client.http.GoogleGDataRequest.handleErrorResponse(GoogleGDataRequest.java:570)     在   com.google.gdata.client.http.HttpGDataRequest.checkResponse(HttpGDataRequest.java:560)     在   com.google.gdata.client.http.HttpGDataRequest.execute(HttpGDataRequest.java:538)     在   com.google.gdata.client.http.GoogleGDataRequest.execute(GoogleGDataRequest.java:536)     在com.google.gdata.client.Service.getFeed(Service.java:1135)at   com.google.gdata.client.Service.getFeed(Service.java:998)at   com.google.gdata.client.GoogleService.getFeed(GoogleService.java:645)     在com.google.gdata.client.Service.getFeed(Service.java:1017)

    我发起我的服务请求的方式是通过curl,我的命令如下:

    service.setOAuth2Credentials(credentials) videoFeed = service.getFeed(new URL(USER_FEED_PREFIX + DEFAULT_USER + UPLOADS_FEED_SUFFIX), VideoFeed.class)

    使用Wireshark我在请求中看到以下内容:

    curl http://localhost:8080/user/someUserId/content

    我被困住了。

1 个答案:

答案 0 :(得分:1)

好的,我想出来了。我试图查询用户上传的视频,显然对于应用来说,它必须获得https://www.googleapis.com/auth/youtube范围的授权,而不是我配置的范围