Я создал адрес электронной почты для служебной учетной записи и добавил cloudfunctions.invoker
роль в электронное письмо, чтобы убедиться, что только облачные задачи могут запускать облачные функции, и удалил AllUsers
роль. Но когда облачные задачи пытались запустить облачную функцию, код состояния был UNAUTHENTICATED(16): HTTP status code 401
, и выполнение не удалось.
Мой текущий код и консоль такие.
index.ts
export const addTasks = functions.https.onCall((data, context) => {
if (!context.auth) {
throw new functions.https.HttpsError('failed-precondition', 'You are not authenticated.')
}
const client = new tasks.CloudTasksClient()
const projectId = functions.config().project.id
const queue = 'queue'
const location = functions.config().project.location
const parent = client.queuePath(projectId, location, queue)
const url = `https://${location}-${projectId}.cloudfunctions.net/executeSomething`
const serviceAccountEmail = functions.config().project.email
const task: tasks.protos.google.cloud.tasks.v2.ITask = {
httpRequest: {
httpMethod: 'POST',
url: url,
oidcToken: {
serviceAccountEmail: serviceAccountEmail,
},
},
scheduleTime: {
seconds: ...,
},
}
const request: tasks.protos.google.cloud.tasks.v2.ICreateTaskRequest = {
parent: parent,
task: task,
}
return client.createTask(request)
}
Консоль моей облачной функции
Я добавил роль инициатора облачных функций в адрес электронной почты учетной записи службы.
Мои переменные среды проекта firebase
Когда я добавил AllUsers
роль в облачные функции, она работает должным образом, поэтому я уверен, что сделал ошибку при повторном разрешении доступа. Что мне не хватает?
Обновлять:
Моя консоль облачных задач
[email protected]
и обновил свои переменные среды и снова развернул функции, но это все равно не удалось. (Я ввожуtest
, и автоматически добавляется случайное число) Я не думаю, что проблема связана с названием. Прикрепил несколько картинок. Пожалуйста, взгляните. 23.11.2020