在 NetBeans 中运行位于 https://developers.google.com/drive/web/quickstart/java?hl=hu 的 Java 快速入门示例时,我收到错误代码:
Jun 04, 2015 12:12:11 AM com.google.api.client.util.store.FileDataStoreFactory setPermissionsToOwnerOnly
WARNING: unable to change permissions for everybody:
C:\Users\Quibbles\credentials\drive-api-quickstart
我做错了什么?
编辑:这是完整的错误消息。
Jun 04, 2015 5:11:39 PM com.google.api.client.util.store.FileDataStoreFactory setPermissionsToOwnerOnly
WARNING: unable to change permissions for owner: C:\Users\Quibbles\.credentials\drive-api-quickstart
Exception in thread "main" java.lang.NullPointerException
at java.io.Reader.<init>(Reader.java:78)
at java.io.InputStreamReader.<init>(InputStreamReader.java:72)
at DriveQuickstart.authorize(DriveQuickstart.java:64)
at DriveQuickstart.getDriveService(DriveQuickstart.java:87)
at DriveQuickstart.main(DriveQuickstart.java:96)
Java Result: 1
遇到了同样的问题,浪费了几个小时才意识到“无法更改所有者的权限:C:\Users\Quibbles.credentials\drive-api-quickstart”
只是一个警告。
真正的问题是这里的空指针。
InputStream in =
DriveQuickstart.class.getResourceAsStream("/client_secret.json");
这条线是我的问题所在。 “in”为空,因此为空指针。
InputStream in = new FileInputStream("<Full Path>\\client_secret.json");
这解决了我的问题。
实际问题是 Google 的 setPermissionsToOwnerOnly API 代码中的一个错误
编写的代码仅适用于基于 Linux/Unix 的系统,不适用于基于 Windows ACL 的系统。
您可以忽略警告或编写自己的 DataStore 类来为 Windows 正确设置权限。
我也将尝试向 Google 提交错误。
我在 Eclipse 中遇到了同样的问题。解决办法如下:
以管理员模式运行 eclipse
清除目录
C:/Users/<username>.credentials/calendar-java-quickstart.json
将 .json 文件复制到 bin 目录,例如
bin/main/resources/client_secret.json
你现在可以自由奔跑了。
基本上,如果您已经启用了 de Drive API 并在 Google Drive API Rest 创建了凭据.json 文件,现在您需要:
1 - 删除上次执行中生成的 tokens 目录。在此目录中包含一个文件 StoredCredential.txt。 2 - 将 SCOPE 更改为 DriveScopes.DRIVE,如下例所示:
私有静态列表范围 = Collections.singletonList(DriveScopes.DRIVE);
3 - 重新运行程序。系统将要求您登录您的谷歌帐户以授予访问同意。
4 - 它将在您的项目中生成一个新的令牌目录,并且现在具有 google Drive 的读写权限。
这对我有用。
我刚刚在 https://developers.google.com/google-apps/calendar/quickstart/java 示例中遇到了同样的问题。我怀疑问题在于您在 Windows 中运行它,并且运行它的 JVM 没有更改 Windows 中文件权限的管理员权限。
运行教程“https://developers.google.com/drive/v2/web/quickstart/java”中给出的示例时遇到同样的问题。按照教程中给出的同上说明进行操作,但不断收到此权限异常。最终,通过将“client_secret.json”移动到“uil”来解决这个问题