Ошибка при аутентификации http-запроса «Управление облачными ресурсами» - PullRequest
0 голосов
/ 29 марта 2020

Я пытаюсь создать проекты GCP из API «Cloud Resource Manager».

В документации https://cloud.google.com/resource-manager/reference/rest/v1/projects/create Я тестирую API с помощью проводника API и работает нормально, но когда я попытаюсь разработать в моем Angular 8 с angularfire проект, пришлите мне ошибку ниже:

error: {
   code: 401
   message: "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project."
   status: "UNAUTHENTICATED"
}

Мой код:


// this triggers the Google OAuth2 popup
async getToken() {
    const provider = new auth.GoogleAuthProvider();
    var credential = await this.afAuth.auth.signInWithPopup(provider)

    var token = await this.afAuth.auth.currentUser.getIdTokenResult(false)
    localStorage.setItem('tokenId', token.token)


    return 
  }


//in this code I save some information in the database, 
//then continue with the process to create a new project
async saveAgent(agente: AgenteModel) {

   const token = await this._auth.getToken()

   //<<<... more code ...>>>

   await this.createProject(agente, token).toPromise()


}



//in this block I post to the API and is when the code crashs
createProject(agente: AgenteModel, token): Observable<any>{

    var headers = new HttpHeaders({
      'Content-Type': 'application/json',
      'X-Requested-With': 'XMLHttpRequest',
      'Authorization': `Bearer ${token}`,
    })


    // * Asignar datos del proyecto
    const body = {
      "name": agente.displayName,
      "projectId": agente.agenteId,
      "labels": {
        "agenteMii": agente.agenteId
      }
    }


    return this._http.post('https://cloudresourcemanager.googleapis.com/v1/projects',body, {headers: headers})
  }

... и я тоже пытаюсь установить токен с перехватчиком, но он не работает, или я не знаю, как его использовать

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

        const token: string = localStorage.getItem('tokenId')

        if (token) {

            req.clone({
                headers: new HttpHeaders({
                    'Authorization': `Bearer ${token}`
                })
            })
        }


           return next.handle(req).pipe(tap(


            // * Muestra el evento
            (next: HttpEvent<any>) => {
                if (next instanceof HttpResponse) { console.log(event) }
            },


                // ! Muestra el error
            (err: any) => { 
                if (err instanceof HttpErrorResponse) { console.warn(err) }
            },


            ),
        )
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...