Я пытаюсь создать проект, содержащий nextjs (машинописный текст), nextauth и API Google Drive. Его основными функциями будут загрузка, удаление и управление папками. Дошёл до того, что могу загружать файлы на свой Google Диск.
Это маршруты API-
import NextAuth from "next-auth/next"
import GoogleProvider from "next-auth/providers/google"
export const authOptions = ({
providers: [
GoogleProvider({
clientId : process.env.GOOGLE_CLIENT_ID ?? "" ,
clientSecret : process.env.GOOGLE_CLIENT_SECRET ?? "",
authorization: {
params:
{
scope: "openid email profile https://www.googleapis.com/auth/drive.file"
//
}
},
})
],
callbacks: {
async jwt({token, user , account} : any){
//console.info("Account Access Token : " , token.accessToken)
if (account) {
token.accessToken = account.access_token;
}
return token
},
async session({ session, token } : any) {
const newSession = {
...session,
accessToken: token.accessToken,
};
//console.info("New Session Object:", newSession);
return newSession;
},
}
})
const handler = NextAuth(authOptions)
export {handler as GET, handler as POST}
and as for the main component or main function that im using for now
const handleFileUpload = async (e : any) => {
e.preventDefault()
const file = e.target.files[0]
const metadata = {
name:file.name
}
const body = new FormData()
body.append('metadata', new Blob([JSON.stringify(metadata)],{
type: "application/json"
}))
body.append("file" , file)
console.info("Body Data : ", body)
try {
const response = await fetch(
`https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart` ,
{
method : "POST",
body : body,
headers: {
Authorization: `Bearer ${session.accessToken}`
}
})
console.info("Response : " , response)
if (response.ok){
const responseData = await response.json()
const fileId = responseData.id
const fileUrl = `http"//drive.google.com/file/d/${fileId}/view`
}
} catch (error){
console.error('Error uploading file:', error);
}
}
Теперь у меня проблема с загрузкой в определенную папку. даже после проверки моего accessToken, чтобы убедиться, что он работает правильно, и использования 'parents = {folderId} он все еще не соответствует месту загрузки, хотя он все еще загружается, но только в местоположение по умолчанию (Мой диск), я просто не могу его правильно понять . Я был бы признателен, если бы кто-нибудь мог объяснить мне и помочь мне понять здесь.
Код взят из https://thewikihow.com/video_abyoZC6dLCc
Я считаю, что ваша цель состоит в следующем.
В этом случае измените свой сценарий следующим образом. В этой модификации изменяются метаданные тела вашего запроса.
const metadata = {
name:file.name
}
const metadata = {
name: file.name,
parents: ["###"] // Please set the folder ID.
}
@user14670265 user14670265 Спасибо за ответ. Я рад, что ваша проблема была решена. И тебе спасибо.
спасибо, это очень помогло, теперь я могу попробовать выяснить, это GET, большое спасибо, очень ценю