我想在我的离子应用程序中使用oauth2,但我收到错误:
无法加载资源:服务器响应状态为401()
错误:http://localhost:8080/oauth/token的Http失败响应:401 OK
响应:
{"时间戳":1502983544253,"状态":401,"错误":"未授权""消息&# 34;:"访问此资源需要完全身份验证","路径":" / oauth / token"}
角度函数:
login(username, password) : Observable<any> {
let params: HttpParams = new HttpParams();
params.set('username', username);
params.set('password', password);
params.set('client_id', this.clientId);
params.set('client_secret', this.clientSecret);
params.set('grant_type', 'password');
let headers = new HttpHeaders();
headers.set('Content-Type', 'application/x-www-form-urlencoded');
return this.http.post(this.EndPointUrl, {
params:params
}, { headers:headers}).map(this.handleData).
catch(this.handleError); }
所有参数都是正确的。
curl -X POST --user 'U:P' -d 'grant_type=password&username=USER&password=PASS' localhost:8080/oauth/toke
返回
{"access_token":"d88c1c5e-d2c0-4c96-9e69-a62816d0a5e8","token_type":"bearer","refresh_token":"8f82f0b0-38a3-4c05-9590-43d3ec2f36b9","expires_in":3599,"scope":"read write"}
我可以使用PostMan和curl获取令牌,我的服务器中的CORS已为此端点启用,因此我认为auth服务器正常工作。
有谁知道我做错了什么?
答案 0 :(得分:0)
尝试添加此内容
headers.set('Authentication', 'Basic client_id:client_secret');
(在Base 64中)
答案 1 :(得分:0)
问题依赖于此。很可能来自角度4.3.4的HTTPClient((@ angular / common / http)目前不能与离子一起工作。使用来自角度4.1.3的Http(@ angular / http)代码可以正常工作。