问题描述
我正在尝试从Instagram API获取访问令牌。我想将正文作为表单数据发送。这是我的代码。这是行不通的。但在邮递员中效果很好。
async getAccesstokenByCode(code: string): Promise<string> {
const baseUrl = config.get('authorize.baseUrl');
const clientId = config.get('basic.clientId');
const clientSecret = config.get('basic.clientSecret');
const grantType = config.get('basic.grant_type');
const redirectUri = config.get('basic.redirect_uri');
const url = `${baseUrl}/oauth/access_token`
const form = new FormData();
form.append('client_id',clientId);
form.append('client_secret',clientSecret);
form.append('grant_type',grantType);
form.append('redirect_uri',redirectUri);
form.append('code',code);
try {
const response = await this.httpService.post(url,{ data: form },{ headers: form.getHeaders() }).toPromise();
return response.data;
} catch (error) {
console.log(error);
}
}
如何使用nestJS HttpModule正确发送帖子数据?
解决方法
这是我的工作代码:
async getAuthToken() {
const url = this.configService.get<string>('AUTHTOKEN_URL');
var bodyFormData = new FormData();
bodyFormData.append('SCOPE',this.configService.get<string>('SCOPE'));
bodyFormData.append('EMAIL_ID',this.configService.get<string>('EMAIL_ID'));
bodyFormData.append('PASSWORD',this.configService.get<string>('PASSWORD'));
const response = await this.httpService.post(
url,bodyFormData,{ headers: bodyFormData.getHeaders() }
).toPromise();
console.log(response.data);
return response.data;
}
在您的情况下,第二个参数不是json只是数据
,我不得不手动格式化数据。我不确定如何在 NestJS 中正确地做到这一点。我还没有找到像 qs 这样的模块,我会在 NodeJS 中使用。
const data = `client_id=${clientId}&client_secret=${clientSecret}&grant_type=${grantType}&redirect_uri=${redirectUri}&code=${code}`;