首页 > 解决方案 > grant_type 是必需的错误 invalid_request

问题描述

我总是使用以下 JS 脚本得到“grant_type is required error invalid_request”,但我不知道为什么:

let tokenUrl = 'myTokenURL';
let clientId = 'myClientID';
let clientSecret = 'myClientSecret';
let scope = 'myScope';

let getTokenRequest = {
    method: 'POST',
    url: tokenUrl,
    auth: {
        type: "basic",
        basic: [
            { key: "username", value: clientId },
            { key: "password", value: clientSecret }
        ]
    },
    header: {
        'Content-Type': 'application/x-www-form-urlencoded',
    },
    body: {
        mode: 'formdata',
        formdata: [
            { key: "grant_type", value: "authorization_code" },
            { key: 'scope', value: scope },
            { key: 'redirect_uri', value: 'MyRedirectURI' },
            { key: 'client_id', value: clientId},
            { key: 'clientSecret', value: clientSecret},
        ]
    }
};


pm.sendRequest(getTokenRequest, (err, response) => {
    let jsonResponse = jsonResponse = response.json();;    
    let newAccessToken = jsonResponse.access_token;

    console.log({ err, jsonResponse, newAccessToken })
});

这是使用邮递员 sendRequest 功能

标签: javascriptpostoauth-2.0postmanrequest-headers

解决方案


对于所有对此解决方案感兴趣的人,请参阅以下代码,这实际上是 Danny Daiton 在上述评论中的回答

let tokenUrl = 'myTokenURL';
let clientId = 'myClientID';
let clientSecret = 'myClientSecret';
let scope = 'myScope';

let getTokenRequest = {
    method: 'POST',
    url: tokenUrl,
    auth: {
        type: "basic",
        basic: [
            { key: "username", value: clientId },
            { key: "password", value: clientSecret }
        ]
    },
    header: {
        'Content-Type': 'application/x-www-form-urlencoded',
    },
    body: {
        mode: 'urlencoded',
        urlencoded: [
            { key: "grant_type", value: "authorization_code" },
            { key: 'scope', value: scope },
            { key: 'redirect_uri', value: 'MyRedirectURI' },
            { key: 'client_id', value: clientId},
            { key: 'clientSecret', value: clientSecret},
        ]
    }
};


pm.sendRequest(getTokenRequest, (err, response) => {
    let jsonResponse = jsonResponse = response.json();;    
    let newAccessToken = jsonResponse.access_token;

    console.log({ err, jsonResponse, newAccessToken })
});

推荐阅读