1

目前我正在开发一个接收我的播放列表的多客户端 youtube 服务。我使用 FileDataStoreFactory 为每个客户端存储必要的凭据。我的问题是我只能在手动授权后的第一个小时内成功访问 youtube api。当我的访问令牌过期时,我无法为具有多个频道或附加其他 youtube 帐户的帐户刷新我的令牌。当我使用仅具有其主 youtube 帐户(未附加任何其他内容)的客户端的存储凭据进行尝试时,一切正常。所以它只适用于某些客户..

每次我尝试刷新令牌时,我都会收到“401 Unauthorized”,没有其他详细信息说明引发异常的原因。

“com.google.api.client.auth.oauth2.TokenResponseException:401 未经授权”

这是我授权的方式:

GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
          HTTP_TRANSPORT, JSON_FACTORY,
          client.getoAuthClientID(),
          client.getoAuthClientSecret(), scopes)
            .setDataStoreFactory(getDataStoreFactory(client))
            .build();

return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");

我最初将我的开发控制台项目设置为安装应用程序,所以我有正确的凭据..

最后我得到这样的 youtube 实例:

youTube = new YouTube.Builder(googleOAuthService.getHttpTransport(), googleOAuthService.getJsonFactory(), cred)
          .setHttpRequestInitializer(cred)
          .setApplicationName(applicationName)
          .build();

youtube 帐户有 3 个频道。我将其中一个设置为与 gmail 地址链接的主频道。<-这就是它不起作用的方式

我有另一个帐户,只有 gmail 地址的默认频道,并且不知何故它适用于这种帐户而无需配置任何东西。

有没有人有同样的经历或知道我做错了什么?

提前致谢

4

0 回答 0