Я пытался реализовать вызов для создания задачи из облачной функции Google.
const functions = require('firebase-functions');
const {CloudTasksClient} = require('@google-cloud/tasks');
// // Create and Deploy Your First Cloud Functions
// // https://firebase.google.com/docs/functions/write-firebase-functions
//
exports.createTask = functions.https.onRequest(async (req, res) => {
// Instantiates a client.
const client = new CloudTasksClient();
const project = 'PROJECT_ID';
const queue = 'test-queue';
const location = 'asia-east2';
const payload = 'hello';
// Construct the fully qualified queue name.
const parent = client.queuePath(project, location, queue);
const task = {
appEngineHttpRequest: {
httpMethod: 'POST',
relativeUri: '/log_payload',
},
};
if (payload) {
task.appEngineHttpRequest.body = Buffer.from(payload).toString('base64');
}
const inSeconds = 1;
if (inSeconds) {
task.scheduleTime = {
seconds: inSeconds + Date.now() / 1000,
};
}
const request = {
parent: parent,
task: task,
};
console.log('Sending task:');
console.log(task);
// Send create task request.
const [response] = await client.createTask(request);
const name = response.name;
console.log(`Created task ${name}`);
return res.status(200).send({ success: true });
});
Я получаю сообщение об ошибке ниже в журналах Firebase после вызова из axios
{"@type":"type.googleapis.com/google.cloud.audit.AuditLog","status":{"code":3,"message":"INVALID_ARGUMENT"},"authenticationInfo":{"principalEmail":"joselitonarte@gmail.com"},"requestMetadata":{"requestAttributes":{},"destinationAttributes":{}},"serviceName":"cloudfunctions.googleapis.com","methodName":"google.cloud.functions.v1.CloudFunctionsService.CreateFunction","resourceName":"projects/testcloudtask-245007/locations/us-central1/functions/createTask"}
Аксиос был структурирован так
У меня есть api.js
, как показано ниже:
import axios from 'axios';
export default axios.create({
baseURL: 'https://us-central1-testcloudtask-245007.cloudfunctions.net'
})
Он вызывается из App.js, как показано ниже:
import React from 'react';
import './App.css';
import api from './api';
export default class App extends React.PureComponent {
onClickTest = async () => {
const result = await api.get('/createTask', {
method: 'GET',
});
console.log('REZZZ', result);
};
render() {
return (
<div className="App">
<header className="App-header">
<button onClick={this.onClickTest}> TEST </button>
</header>
</div>
);
}
}