我有一个ASP.Net WebAPI2网站,它有一个实现OWIN令牌服务的/ token。这项服务对我的网站来说效果很好,我可以使用其他客户端,并从我的电脑和Android手机中获得预期的令牌。
然而,当我从我的Android手机KitKat OS上部署的离子项目中调用该服务时,我得到{"error":"unsupported_grant_type"}
。它在同一个wifi上,所以我可以使用休息客户端并使用它获取令牌。
这是我正在使用的角度代码:
.service('LoginTokenService', ['$resource', function ($resource) {
function getToken(payLoad, fnSuccess, fnError) {
return $resource("http://192.168.1.104/token", {},
{
"getAuthToken": {
method: "POST",
isArray: false,
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
}
})
.getAuthToken(payLoad, fnSuccess, fnError);
}
return ({
getToken: getToken
});
同样在我的webapi代码中,我设置了app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
选项,如下所示
public void ConfigureAuth(IAppBuilder app)
{
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
// Mounts the middleware on the provided app with the options configured
// above
app.UseOAuthBearerTokens(OAuthOptions);
}
payLoad
包含UserName='myuser@domain.com', Password='my_password' & grant_type='password'
因为我对离子和cardova相对较新,我想知道是否有人遇到过类似的问题。
答案 0 :(得分:1)
我想我知道这个问题。在我的网站上,我使用$.param(payload)
向/ token服务发送登录信息,但由于默认情况下离子中没有JQuery,我删除了它。
我现在使用$httpParamSerializerJQLike(payLoad)
来序列化有效负载及其现在正在运行..