【问题标题】:cordova project gives unsupported_grant_type error but same works on browsercordova 项目给出了 unsupported_grant_type 错误,但在浏览器上同样有​​效
【发布时间】:2025-12-02 08:15:01
【问题描述】:

我有一个 ASP.Net WebAPI2 网站,它有一个实现 OWIN 令牌服务的 /token。该服务在我的网站上运行良好,我可以使用其他客户端并按预期从我的 PC 和 Android 手机获取令牌。

但是,当我从部署在我的 android 手机 KitKat OS 上的 ionic 项目中调用该服务时,我得到了 {"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'

由于我对 ionic 和 cardova 比较陌生,我想知道是否有人遇到过类似的问题。

【问题讨论】:

  • 我建议您将您的编辑作为答案并接受它

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


【解决方案1】:

我想我知道这个问题。在我的网站上,我使用$.param(payload) 将登录信息发送到 /token 服务,但由于 JQuery 在默认情况下在 ionic 中不可用,因此我将其删除。

我现在已经使用$httpParamSerializerJQLike(payLoad) 来序列化有效负载并且它现在正在工作..

【讨论】: