Insufficient OAuth permissions detected for GCP Pub/Sub access

Currently, I am following the instructions outlined in this guide to enable push notifications for new responses on a Google Forms form. After completing all prerequisites successfully, I managed to publish a message to my Pub/Sub Topic that then forwards it to a webhook running on NestJS with TypeScript (Node.js environment).

However, I'm facing an issue while attempting to create a watch to connect my form to the corresponding topic. The guide suggests granting necessary permissions to the system service account ([email protected]) to publish to the topic and creating the watch using the googleapis SDK.

When implementing the code example provided, I encounter the following error message:

{
  "code": 400,
  "message": "Project does not have necessary OAuth permissions from authorizing user.",
  "errors": [{
    "message": "Project does not have necessary OAuth permissions from authorizing user.",
    "domain": "global",
    "reason": "failedPrecondition"
  }],
  "status": "FAILED_PRECONDITION"
}

I've experimented with various scopes and roles, but none seem to resolve the issue. Any suggestions or advice would be greatly appreciated as I'm unsure of what else to try...

Answer №1

It appears that @DazWilkin's insight was correct, generating a watch is only possible when the app is authorized through an OAuth2 flow. By following the documentation, I set up a consent screen and obtained a client ID, enabling me to successfully create a watch. Thanks for the helpful tip!

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

The most effective method for transferring a JavaScript object between a TypeScript frontend and a Node.js backend

I need some advice on how to effectively share a JavaScript object between my Angular2 with Typescript frontend and NodeJS backend in an application I'm working on. Currently, I am using a .d.ts file for the frontend and adding a module.exports in the ...

Ways to bypass browser pop-up blockers when using the window.open function

I am displaying an HTML retrieved from the backend. printHtml(htmlContent) { var windowToPrint = window.open('', '_blank'); windowToPrint.document.write(htmlContent); setTimeout(function () { windowToPrint.document ...

Implementing TypeScript/Angular client generation using Swagger/OpenAPI in the build pipeline

Generating Java/Spring Server-Stubs with swagger-codegen-maven-plugin In my Spring Boot Java project, I utilize the swagger-codegen-maven-plugin to automatically generate the server stubs for Spring MVC controller interfaces from my Swagger 2.0 api.yml fi ...

Ensuring the presence of TypeScript variables

Take a look at this code snippet: let str: string | null; function print(msg: string) { console.log(msg); } print(str); When running this code, the typescript compiler correctly identifies the error, stating that Argument of type 'string | nu ...

Obtain the POST request response in Angular 6

Currently, I am utilizing Angular to create a user interface that interacts with a REST API. Within the function below, my process involves adding a new project via a POST request, followed by the addition of a series of aliases inputted by the user in the ...

Ways to dynamically adjust the interval using an Observable pipe

One way to approach this is by updating the intervalValue through a button click event. This value is dynamic and changes frequently. intervalValue: number; intervalValue: Observable<number>; // I also attempted using this method, but the interval ...

One way to display a table is by populating it with data from an API. If the table does

Within my Angular 6 application, there exists a table that displays data fetched from a web api. Additionally, I have incorporated some ngIf containers. One of these containers is programmed to exhibit a message in case the web api data turns out to be emp ...

What is the best approach to handle Flow types for component props and getDerivedStateFromProps when the props are not the same

Having a Component with its props, an additional prop is added for getDerivedStateFromProps. The issue arises when setting the props with the additional one, throwing an error that the prop is not being used. Conversely, setting it without the extra prop c ...

Can someone guide me on incorporating static methods into a Mongoose model using TypeScript for Mongoose version 5.11?

When using Mongoose 5.10, I implemented static methods in my Mongoose models with the following pattern: import { Schema, Document, Model, Connection } from "mongoose"; import { v4 } from "uuid"; export interface IFoo extends Document ...

What steps should I take to set up an automated polling system for real-time data updates in Angular?

Hello everyone, I am currently delving into the world of Angular and facing a challenge with refreshing service data automatically by making API requests at regular intervals. The focus is on a particular service where I aim to update the shopPreferences f ...

What is the method for verifying the types of parameters in a function?

I possess two distinct interfaces interface Vehicle { // data about vehicle } interface Package { // data about package } A component within its props can receive either of them (and potentially more in the future), thus, I formulated a props interface l ...

Transform a string into a boolean value for a checkbox

When using v-model to show checked or unchecked checkboxes, the following code is being utilized: <template v-for="(item, index) in myFields"> <v-checkbox v-model="myArray[item.code]" :label="item.name" ...

Tips for organizing nested navigators correctly in React Native

Current Project: I'm currently working on developing an innovative AudioBook player using react-native and typescript. This is a significant project for me as I am relatively new to both technologies, and I am facing some challenges in properly struc ...

What is the role of the "prepare" function in AWS CDK constructs?

TL;DR: What is the role and purpose of the prepare(): void method in AWS CDK's Construct class? When and how should it be utilized or avoided? The information provided about prepare() states: prepare() function is called after child constructs have ...

Breaking down an object using rest syntax and type annotations

The interpreter mentions that the humanProps is expected to be of type {humanProps: IHumanProps}. How can I properly set the type for the spread operation so that humanPros has the correct type IHumanProps? Here's an example: interface IName { ...

Error: The type 'Ref<number>' is not a valid index type

In my Vue project, I am trying to access the value using myArray[refVariable]. How can I resolve this specific error message in Vue/Typescript: Type 'Ref<number>' cannot be used as an index type ...

Troubleshooting image loading issues when updating the base URL in an Angular JS project

I am trying to update the base URL for my application. Currently, when I load the application, the URL shows up as http://localhost:4200/#/, but I want it to be http://localhost:4200/carrom/ instead. To accomplish this, I modified the base URL and now th ...

What allows mapped types to yield primitive outputs when using {[P in keyof T]}?

Check out this innovative mapped type example that utilizes the power of keyof: type Identity<T> = { [P in keyof T]: T[P]; }; Have you ever wondered why Identity<number> results in the primitive number type, rather than an object type? Is th ...

Implement Sorting Functionality in Angular Using FormArray

Hello, I am a beginner in Angular and need some help with implementing sorting functionality. I have an input class called Foo which contains a list of books with properties like Id, Title, and Description. These books are displayed in a table where users ...

What causes the act of clicking a button to alter a particular section of my vscode extension to seem so detrimental?

Background Language used : typescript UI toolkit svelte and bootstrap Description of Problem I am currently developing a vscode extension where clicking a button should update an HTML table element in the view based on the button clicked. Here is the type ...