目前我正在开发一个接收我的播放列表的多客户端YouTube服务。我使用FileDataStoreFactory为每个客户端存储必要的凭据。 我的问题是我只能在手动授权后的第一个小时成功访问youtube api。当我的访问令牌过期时,我无法为具有多个渠道或附加的其他YouTube帐户的帐户刷新我的令牌。当我使用仅具有其主要youtube帐户的客户端的存储凭证(没有其他任何附加)尝试它时,一切正常。 所以它只适用于某些客户..
每当我尝试刷新令牌时,我都会得到一个“401 Unauthorized”,而没有关于导致异常被抛出的其他细节。
“com.google.api.client.auth.oauth2.TokenResponseException:401 Unauthorized”
这是我授权的方式:
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地址的默认频道,不知何故,它适用于此类帐户而无需配置任何内容。
有人经历过同样的事情或知道我做错了吗?
提前致谢