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"}';