В параметре аутентификации отсутствует ionic & dialogflow - PullRequest
0 голосов
/ 06 июня 2018

Это мой файл home.ts

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { Message } from '../module/message.module';
import { ChatProvider } from '../../providers/chat/chat';
@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {

  messages: Message[] = [];

  constructor(public navCtrl: NavController,private chatprovider: ChatProvider) {

  }

  // ionViewDidLoad(){
  //   let message = new Message("hi")
  //   this.messages.push(message);
  // }

  sendMesage(message_content) {
    this.chatprovider.sendMessage(message_content.value).subscribe(res =>{
      console.log(res);
      // let message = new Message(res.result.speech);
      // this.messages.push(message);
      // message_content.value = '';
    }, err => {
      console.log(err)
    }
    )
  }
}

Это мой файл chatprovider.ts

import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Injectable } from '@angular/core';
import 'rxjs/add/operator/map';

@Injectable()
export class ChatProvider {

  url = "https://api.dialogflow.com/v1/query";
  accessToken = "df42472524af4201a5bd79b8bf930539";

  constructor(public http: HttpClient) {
    console.log('Hello ChatProvider Provider');
  }

  public sendMessage(message: string) {
    let data = {
      "lang": "en",
      "query": message,
      "sessionId": "1234"
    }
    let headers = new HttpHeaders({'Content-Type': 'application/json'});
    headers.append("Authorization","Bearer" + this.accessToken);
    return this.http.post(this.url, data,{headers: headers})
          .map(res => {
            return res
          })
  }

}

Я получаю сообщение об ошибке типа

POST https://api.dialogflow.com/v1/query 403 () home.ts: 29 HttpErrorResponse {headers: HttpHeaders, status: 403, statusText: "OK", url: "https://api.dialogflow.com/v1/query", ok: false,…} ошибка:status: {code: 401, errorType: «unauthorized», errorDetails: «Отсутствуют параметры аутентификации»} proto : Конструктор объекта: ƒ

HttpHeaders {normalizedNames: Map (0), lazyUpdate: null, lazyInit: ƒ} сообщение: «Http error response для https://api.dialogflow.com/v1/query: 403 OK» имя: «HttpErrorResponse» ok: falsestatus: 403statusText: «OK» url: «https://api.dialogflow.com/v1/query"proto: HttpResponseBase

1 Ответ

0 голосов
/ 07 июня 2018

Убедитесь, что ваш токен доступа сформирован правильно и имеет 1 пробел между Носителем и самим токеном доступа: https://tools.ietf.org/html/rfc6750#section-2.1

Так что попробуйте:

public sendMessage(message: string) {
    let data = {
      "lang": "en",
      "query": message,
      "sessionId": "1234"
    }
    let headers = new HttpHeaders({'Content-Type': 'application/json'});
    headers.append("Authorization","Bearer " + this.accessToken);
    return this.http.post(this.url, data,{headers: headers})
          .map(res => {
            return res
          })
  }
...