我在角度2中遇到了Yahoo Oauth2的问题!一切都有效,直到get_token!
来电,但当我将get_token
称为服务时,雅虎会返回:Error 500 with No Access-Control-Allow-Origin!
。
如何解决这个问题?
ngOnInit() {
this.sub = this._activatedRoute.queryParams.subscribe((param: Params) => {
let code = param['code'];
let token_id = param['id_token']
this._yahooService.callYahoo(code)
.subscribe(res => {
console.log(res)
});
});
}
callYahoo(code: any, token_id?: any): Observable<Object> {
let yahooAddress: string = 'https://api.login.yahoo.com/oauth2/get_token';
let _url = new URLSearchParams();
let header = new Headers();
header.append('client_id', 'xxx');
header.append('client_secret', 'xxx');
header.append('grant_type', 'authorization_code');
header.append('redirect_uri', 'http://example.com/call-back');
header.append('code', code);
let body: string = _url.toString();
header.append('Content-Type', 'application/x-www-form-urlencoded');
header.append('Authorization', 'Basic xxx');
return this._http.post(yahooAddress, body, { headers: header })
.map(res => {
return res
})
}
答案 0 :(得分:0)
必须将它们作为JSON对象的属性传递到POST请求主体中,而不是将header_id,client_secret等作为标头传递。
您只需要一个标题,授权。一切都在体内。
Yahoo的网页很好,准确地显示了如何创建get_token请求。 https://developer.yahoo.com/oauth2/guide/openid_connect/getting_started.html