我在Postman中有一个集合,所有集合都连接到Google API,我想在集合级别实现Auth2.0作为预请求脚本,以便生成访问令牌。我正在使用以下代码来做到这一点:
vargars
如果运行此命令,我会返回
在邮递员控制台中“缺少必需的参数:代码”
。我可以看到问题是我没有提交代码参数,就像我只是从UI生成令牌而不使用预请求脚本一样,我在邮递员控制台中显示了这一点:
let callbackUrl = 'xxxxxxxxx';
let authUrl = 'https://accounts.google.com/o/oauth2/auth';
let tokenUrl = 'https://oauth2.googleapis.com/token';
let clientId = 'xxxxxxxxx';
let clientSecret = 'xxxxxxxxxxxx';
let scope = 'xxxxxxxxx'
let getTokenRequest = {
method: 'POST',
url: tokenUrl,
auth: {
type: "basic",
basic: [
{ key: "username", value: clientId },
{ key: "password", value: clientSecret }
]
},
body: {
mode: 'formdata',
formdata: [
{ key: 'grant_type', value: 'authorization_code' },
{ key: 'redirect_uri', value: callbackUrl },
{ key: 'authUrl', value: authUrl },
{ key: 'scope', value: scope }
]
}
};
pm.sendRequest(getTokenRequest, (err, response) => {
let jsonResponse = response.json(),
newAccessToken = jsonResponse.access_token;
console.log({ err, jsonResponse, newAccessToken })
pm.environment.set('accessToken', newAccessToken);
pm.variables.set('accessToken', newAccessToken);
});
我的问题是这段代码从何而来?我假设邮递员会生成它,因为它是我的请求正文的一部分?以及如何生成它作为我的请求前脚本的一部分添加到我的请求正文中?
更新:
我发现我需要先推送GET请求以检索授权代码,然后在POST中使用它。
如果我使用以下URL在浏览器中运行并授权登录,则返回代码:
但是,在Postman中,它返回给我google登录HTML页面,这意味着我每次都必须进行授权。
有什么想法吗?