cordova项目给出了unsupported_grant_type错误,但同样适用于浏览器

时间:2015-10-17 21:02:56

标签: angularjs asp.net-web-api ionic visual-studio-cordova

我有一个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相对较新,我想知道是否有人遇到过类似的问题。

1 个答案:

答案 0 :(得分:1)

我想我知道这个问题。在我的网站上,我使用$.param(payload)向/ token服务发送登录信息,但由于默认情况下离子中没有JQuery,我删除了它。

我现在使用$httpParamSerializerJQLike(payLoad)来序列化有效负载及其现在正在运行..