【发布时间】:2022-01-26 15:38:35
【问题描述】:
我无法解决如何使用 google drive API 将 "shared" 状态更改为 false。
这是我的工作:
-
我获取我所有的文件夹和文件,女巫是公开的 [this 一][1] (我用
q:"'me' in owners and visibility != 'limited'"过滤器) -
我获取文件/文件夹 ID 并将其放入 [另一个][2] 在响应对象中,我得到了我想要更改的这一行:
"shared": true
我无法将其设置为 false,有人知道吗?
祝你有美好的一天
编辑:我使用 NodeJs(netlify 函数),这是我获取文件和文件夹的代码:
const { google } = require('googleapis')
const CLIENT_ID = process.env.CLIENT_ID
const CLIENT_SECRET = process.env.CLIENT_SECRET
const REDIRECT_URI = 'https://developers.google.com/oauthplayground'
const REFRESH_TOKEN = process.env.REFRESH_TOKEN
exports.handler = async () => {
const oauth2Client = new google.auth.OAuth2(CLIENT_ID, CLIENT_SECRET, REDIRECT_URI)
oauth2Client.setCredentials({ refresh_token: REFRESH_TOKEN })
const drive = google.drive({
version: 'v3',
auth: oauth2Client,
})
try {
const result = await drive.files.list({
q:"'me' in owners and visibility != 'limited'"
})
return {
statusCode: 200,
headers: {
'Access-Control-Allow-Origin': '*',
},
body: JSON.stringify({ ...result, Body: result.toString('utf-8') })
}
} catch (e) {
console.log(e.message)
return { statusCode: 500, body: e.message }
}
}
要更改可见性(“shared”:true -> “shared”:false), 我试过@Tanaike 回答:
const fetch = require('node-fetch')
const API_ENDPOINT_A = 'DELETE https://www.googleapis.com/drive/v3/files/'
const API_ENDPOINT_B = '/permissions/anyoneWithLink'
exports.handler = async (event) => {
try {
const itemId = '1-7ESYk_zKJ5Sdfg_z-XiuoXxrKKpHwSa' // event.queryStringParameters.itemId
const response = await fetch(API_ENDPOINT_A + itemId + API_ENDPOINT_B)
const data = await response.json()
return {
statusCode: 200,
headers: {
'Access-Control-Allow-Origin': '*'
},
body: JSON.stringify({ data })
}
} catch (error) {
console.log(error)
return {
statusCode: 500,
body: JSON.stringify({ error: 'Failed fetching data' })
}
}
}
但我不知道如何传递我的私人信息(api 密钥...),我使用 OAuth 2 进行获取,我是否也应该使用它来编辑可见性? [1]:https://developers.google.com/drive/api/v2/reference/files/list [2]:https://developers.google.com/drive/api/v2/reference/files/patch
【问题讨论】: