雅虎 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