这是我的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,…}错误:状态:{代码: 401,errorType:“未授权”,errorDetails:“身份验证参数missing"}proto:对象构造函数:ƒ
HttpHeaders:{normalizedNames: Map(0),lazyUpdate: null,lazyInit:ƒ}message:"Http failure response for Http: 403 OK"name:"HttpErrorResponse"ok: falsestatus: 403statusText:"OK"url: HttpHeaders:“OK”url:HttpHeaders:{HttpHeaders:{Http:https://api.dialogflow.com/v1/query(0),HttpHeaders:null,HttpHeaders}message:“Http failure response for Http:403 OK”name:“HttpErrorResponse”OK:falsestatus:403statusText:“OK”url:HttpHeaders
发布于 2018-06-07 06:50:26
确保您的访问令牌格式正确,即在持有者和访问令牌本身之间有1个空格:https://www.rfc-editor.org/rfc/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
})
}
https://stackoverflow.com/questions/50722708
复制相似问题