Salesforce Apex Google Drive API 正在使用 mimeType "application/json" 创建新文件
Salesforce Apex Google Drive API is creating new file with mimeType "application/json"
尝试在 apex 中创建一个函数,该函数将在 Salesforce 中创建新记录时创建 Google 个驱动器文件夹。
我已经成功地验证和处理 GET 请求了。我的问题与 POST 请求有关。下面的代码应使用 "title" 参数中提供的标签创建一个文件夹。脚本执行并创建一个没有标签的无扩展名文件。
public void getDriveFiles(HttpResponse authResponse) {
http h = new Http();
Httprequest req = new HttpRequest();
HttpResponse res = new HttpResponse();
Map<String, Object> responseObject = (Map<String, Object>) JSON.deserializeUntyped(authResponse.getBody());
req.setEndpoint('https://www.googleapis.com/upload/drive/v2/files');
req.setMethod('POST');
req.setHeader('Content-type', 'application/json');
req.setHeader('Authorization', 'Bearer '+responseObject.get('access_token'));
String jsonData = '{"title":"NewFolder", "mimeType":"application/vnd.google-apps.folder"}';
req.setBody(jsonData);
res = h.send(req);
system.debug('Response ='+ res.getBody() +' '+ res.getStatusCode());
}
我感觉这是我的请求正文,但我不知道如何修复它。
您使用了错误的端点。您将发布到 content
端点,而不是 file
端点。
所以
req.setEndpoint('https://www.googleapis.com/upload/drive/v2/files');
应该是(对于 v2 API)
req.setEndpoint('https://www.googleapis.com/drive/v2/files');
或(对于 v3 API)
req.setEndpoint('https://www.googleapis.com/drive/v3/files');
如果您使用 v3(您可能应该使用),您的 json 应该改变
String jsonData = '{"name":"NewFolder", "mimeType":"application/vnd.google-apps.folder"}';
尝试在 apex 中创建一个函数,该函数将在 Salesforce 中创建新记录时创建 Google 个驱动器文件夹。
我已经成功地验证和处理 GET 请求了。我的问题与 POST 请求有关。下面的代码应使用 "title" 参数中提供的标签创建一个文件夹。脚本执行并创建一个没有标签的无扩展名文件。
public void getDriveFiles(HttpResponse authResponse) {
http h = new Http();
Httprequest req = new HttpRequest();
HttpResponse res = new HttpResponse();
Map<String, Object> responseObject = (Map<String, Object>) JSON.deserializeUntyped(authResponse.getBody());
req.setEndpoint('https://www.googleapis.com/upload/drive/v2/files');
req.setMethod('POST');
req.setHeader('Content-type', 'application/json');
req.setHeader('Authorization', 'Bearer '+responseObject.get('access_token'));
String jsonData = '{"title":"NewFolder", "mimeType":"application/vnd.google-apps.folder"}';
req.setBody(jsonData);
res = h.send(req);
system.debug('Response ='+ res.getBody() +' '+ res.getStatusCode());
}
我感觉这是我的请求正文,但我不知道如何修复它。
您使用了错误的端点。您将发布到 content
端点,而不是 file
端点。
所以
req.setEndpoint('https://www.googleapis.com/upload/drive/v2/files');
应该是(对于 v2 API)
req.setEndpoint('https://www.googleapis.com/drive/v2/files');
或(对于 v3 API)
req.setEndpoint('https://www.googleapis.com/drive/v3/files');
如果您使用 v3(您可能应该使用),您的 json 应该改变
String jsonData = '{"name":"NewFolder", "mimeType":"application/vnd.google-apps.folder"}';