雅虎 OAuth2 不工作
Yahoo OAuth2 not work
我在 angular 2 中遇到 Yahoo Oauth2 问题!在 get_token!
调用之前一切正常,但是当我调用 get_token
作为服务时,Yahoo returns: 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
})
}
与其将 client_id、client_secret 等作为 header 传递,不如将它们作为 JSON object 的属性传递POST 请求 body.
您只需要一个header,授权。其他一切都在 body.
Yahoo 有一个很好的网页展示了如何创建 get_token 请求。
https://developer.yahoo.com/oauth2/guide/openid_connect/getting_started.html
我在 angular 2 中遇到 Yahoo Oauth2 问题!在 get_token!
调用之前一切正常,但是当我调用 get_token
作为服务时,Yahoo returns: 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
})
}
与其将 client_id、client_secret 等作为 header 传递,不如将它们作为 JSON object 的属性传递POST 请求 body.
您只需要一个header,授权。其他一切都在 body.
Yahoo 有一个很好的网页展示了如何创建 get_token 请求。 https://developer.yahoo.com/oauth2/guide/openid_connect/getting_started.html