获取 400 的状态 - {"error":"invalid_grant"} On Authentication

Getting status of 400 - {"error":"invalid_grant"} On Authentication

我创建了自己的网站 (www.luig.us)。我为 SQL 创建了一个基本的 IDE 服务器来教孩子们 SQL,仅 DML。

需要用户在开始时输入用户名和密码才能获得使用该服务的令牌。

在本地,一切正常,但是当我把它放在我的网站上,由 go-daddy 托管时,我每次都会收到相同的消息,我不知道为什么。

{"error":"invalid_grant"}

这是我的 java 脚本代码 - 寻找授权。任何帮助表示赞赏。 我密切关注这篇文章https://www.c-sharpcorner.com/UploadFile/736ca4/token-based-authentication-in-web-api-2/



function Authorize() {
    let bearer = "Basic Q01JUzMwOERTMzA4OndlYkFQSQ=="
    var email = document.getElementById("email").value;
    var password = document.getElementById("password").value;
    var userNameAndPasswordFilled = (email != "" && password != "");
    if (!userNameAndPasswordFilled) {
        $("#formError").show('fast');
    }
    else {
        var bodyOfRequest = {
            grant_type: "password",
            username: email,
            password: password
        };
        $.ajax({
            type: "POST",
            url: uriManager.access,
            beforeSend: function (request) {
                request.setRequestHeader("Authorization", bearer);
            },
            data: bodyOfRequest,
            success: function (response) {
                sessionStorage.setItem(programKeyWords.BearerToken, response.access_token);
                $('#LogonModal').modal('hide');
            },
            error: function (response) {
                $("#formError").show('fast');
            }
        });
    }
}


没有更多信息我不能说太多,但我首先要检查的是您的数据库中是否确实有用户(或您正在使用的任何 oauth)。如果您的 oauth 数据库中实际上没有使用该用户名和密码的用户,则可能会导致您收到的错误。

您用于 uriManager.access 的端点是您必须检查该用户是否实际存在的地方。

问题不在于代码。问题在于:

  1. 连接字符串。这是不正确的。
  2. 我正在对用户名和密码进行加密,但由于特殊字符,它们没有正确匹配

我做了什么来修复它。

  1. 修复了连接字符串
  2. 修复了存储散列而不是字符串的算法。