我想在google drive中将文件上传到我的帐户。这个过程应该没有人为干预。有没有办法使用谷歌驱动器API提供我的用户和密码上传我的谷歌驱动器中的文件?
到目前为止我做了什么:
我有下一个代码:
/**
* Email of the Service Account
*/
private static final String SERVICE_ACCOUNT_EMAIL = "account_of_service_account@developer.gserviceaccount.com";
/**
* Path to the Service Account's Private Key file
*/
private static final String SERVICE_ACCOUNT_PKCS12_FILE_PATH = "/path/to/pkcs12/donloaded.pkcs12";
/**
* Build and returns a Drive service object authorized with the service
* accounts.
*
* @return Drive service object that is ready to make requests.
*/
public static Drive getDriveService() throws GeneralSecurityException, IOException, URISyntaxException {
HttpTransport httpTransport = new NetHttpTransport();
JacksonFactory jsonFactory = new JacksonFactory();
List<String> scopes = new ArrayList<String>();
scopes.add(DriveScopes.DRIVE);
GoogleCredential credential;
credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
.setServiceAccountScopes(scopes)
.setServiceAccountPrivateKeyFromP12File(new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH))
.build();
Drive service = new Drive.Builder(httpTransport, jsonFactory, null)
.setHttpRequestInitializer(credential).build();
return service;
}
public static void main(String[] args) throws GeneralSecurityException, IOException, URISyntaxException {
Drive client = getDriveService();
File body = new File();
body.setTitle("mytitle");
body.setMimeType("application/vnd.google-apps.spreadsheet");
File file = client.files().insert(body).execute();
System.out.println(file.getId());
System.out.println(file.getAlternateLink());
}
当我运行代码时结果没问题,我得到文件的ID和备用链接,但文件没有加载到我的帐户。我将备用链接粘贴到浏览器中,但我没有权限。
您刚刚上传的文件在哪里?我应该更改什么来表明我的帐户驱动器?我应该在哪里添加用户名和密码才能与我的驱动器关联?我应该怎样对文件公开?
非常感谢你的关注。我希望他们可以帮助我。
答案 0 :(得分:1)
您还需要在项目上设置父级,例如“root”,以便它们在“我的云端硬盘”空间中显示为某人。 “root”作为父级是UI中的“我的驱动器”。
在云端硬盘用户界面中使用搜索进行确认,您会发现它们已上传,但目前处于“未授权”状态,因为您的代码未添加父级。
答案 1 :(得分:1)
您正在将该文件上传到您的服务帐户。 如果您需要访问该文件,则必须与您的电子邮件共享该文件。 使用以下方法与您的电子邮件共享文件。
public static void shareFileOrFolder(Drive service, File file)
throws IOException {
Permission newPermission = new Permission();
newPermission.setEmailAddress("xxxxx@gmail.com");
newPermission.setValue("xxxxx@gmail.com");
newPermission.setType("user");
newPermission.setRole("writer");
service.permissions().insert(file.getId(), newPermission).execute();
}