Google Analytics API Java快速启动报错:权限修改失败警告
解决Google Analytics API Java快速启动中的权限警告问题
嘿,这个权限警告我在帮人排查Google Analytics API问题时见得太多了!先给你吃个定心丸:这个警告完全不影响API的正常功能,你的代码依然能正常拉取Analytics数据,它只是个“面子问题”——看着日志刷屏有点烦而已。
为啥会出现这个警告?
根源是跨系统的权限模型不兼容:Google官方的FileDataStoreFactory默认会尝试给存储授权凭据的本地文件/目录设置Unix风格的「仅所有者可访问」权限,但Windows的文件权限机制和Unix/Linux完全不一样,它没法完成这个操作,就抛出了警告。
两种解决办法任你选
办法1:直接屏蔽警告(最简单)
如果只是不想看到日志里的这些警告,直接把com.google.api.client.util.store这个包的日志级别调高到ERROR就行:
- 如果你用Log4j2,在配置文件里加这段:
<Logger name="com.google.api.client.util.store" level="ERROR" additivity="false"> <AppenderRef ref="Console"/> </Logger>
- 如果你用Java自带的
java.util.logging,在logging.properties里加:
com.google.api.client.util.store.level = SEVERE
办法2:从根源上绕开权限设置(洁癖党首选)
如果你想彻底解决这个警告,有两个方向可选:
选项A:用内存存储凭据(适合测试场景)
把原来创建FileDataStoreFactory的代码换成内存版的实现,这样完全不涉及本地文件权限:
DataStoreFactory dataStoreFactory = new MemoryDataStoreFactory();
缺点是每次重启程序都要重新授权,适合临时测试用。
选项B:自定义Windows友好的文件存储工厂(生产场景)
继承官方的FileDataStoreFactory,重写它的权限设置方法,让它在Windows下啥也不做:
public class WindowsFriendlyFileDataStoreFactory extends FileDataStoreFactory { public WindowsFriendlyFileDataStoreFactory(File dataDirectory) throws IOException { super(dataDirectory); } @Override protected void setPermissionsToOwnerOnly(File file) throws IOException { // 空实现,跳过Windows下的权限修改操作 } }
然后把原来的new FileDataStoreFactory(...)替换成new WindowsFriendlyFileDataStoreFactory(...),这样既保留了本地文件存储凭据的功能,又不会再触发那个烦人的警告。
内容的提问来源于stack exchange,提问作者Developer Admiral Digital
相关产品推荐
相关产品推荐

