目前我正在开发一个接收我的播放列表的多客户端 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 地址的默认频道,并且不知何故它适用于这种帐户而无需配置任何东西。
有没有人有同样的经历或知道我做错了什么?
提前致谢