Yahoo OAuth2不起作用

时间:2017-06-13 21:39:53

标签: angular oauth yahoo

我在角度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
        })
}

1 个答案:

答案 0 :(得分:0)

必须将它们作为JSON对象的属性传递到POST请求主体中,而不是将header_id,client_secret等作为标头传递。

您只需要一个标题,授权。一切都在体内。

Yahoo的网页很好,准确地显示了如何创建get_token请求。 https://developer.yahoo.com/oauth2/guide/openid_connect/getting_started.html