inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Vue3 완벽 마스터: 기초부터 실전까지 - "실전편"

axios 모듈 & Vite 환경 변수 설정 (env)

fetch 코드를 강의에 나온 것 처럼 axios 로 변경하고 싶습니다.

318

히나타

작성한 질문수 12

0

현재 구글캘린더를 OAuth2.0 으로 연동하는걸 테스트 해보고 있습니다.

authorization code 까지 얻어서 access token 을 가져오려고 포스트맨에서 테스트 해보니 access token 을 잘 가져왔습니다.

이제 이걸 강의에 나온 방식으로 vue.js 로 옮기고 싶은데 잘 안되네요.

포스트맨에서 성공한 fetch 코드는 아래와 같습니다.

var myHeaders = new Headers();
	myHeaders.append('Content-Type', 'application/x-www-form-urlencoded');

	var urlencoded = new URLSearchParams();
	urlencoded.append('code', code.value);
	urlencoded.append('client_id', clientId);
	urlencoded.append('redirect_uri', redirectUri);
	urlencoded.append('client_secret', clientSecret);
	urlencoded.append('grant_type', 'authorization_code');

	var requestOptions = {
		method: 'POST',
		headers: myHeaders,
		body: urlencoded,
		redirect: 'follow',
	};

	fetch(`https://oauth2.googleapis.com/token`, requestOptions)
		.then(response => response.text())
		.then(result => console.log(JSON.parse(result)))
		.catch(error => console.log('error', error));

이 코드 그대로 vue.js 에 사용해도 잘 되더라구요.

그런데 강의 처럼 변경해 보고 싶은데 잘 안되네요.

 

일단 api/index.js 파일은 아래처럼 했구요.

import axios from 'axios';

function create(baseURL, options) {
	const instance = axios.create(Object.assign({ baseURL }, options, { withCredentials: true }));

	return instance;
}

export const token = create('https://oauth2.googleapis.com');

api/token.js 파일은 아래 처럼 했봤습니다.

import { token } from '.';

export function getToken(params) {
	const data = JSON.stringify(params);
	console.log('data:', data);
	const config = {
		headers: {
			'Content-Type': 'application/x-www-form-urlencoded',
		},
		maxBodyLength: Infinity,
		data: data,
	};
	return token.post('/token', params, config);
}

사용 페이지에서는 아래처럼 적용했습니다.

import { getToken } from '@/api/token';

async function getAccToken() {
	const params = {
		code: code.value,
		client_id: clientId,
		client_secret: clientSecret,
		redirect_uri: redirectUri,
		grant_type: 'authorization_code',
	};
	try {
		const response = await getToken(params);
	} catch (error) {
		console.log('error:', error);
	}
}

그런데, 이렇게 저렇게 여러가지로 해보고 있는데 통신오류 나면서 안되네요.

 

fetch 코드를 강의의 코드 형식으로 어떻게 변경해야 할까요?

변경 안하고 그냥 fetch 코드를 그대로 써도 되긴하는데 뭔가 좀 찝찝하고, 왜 안되는지 궁금하기도 해서 질문드립니다.

vue.js

답변 1

0

짐코딩

안녕하세요 🙂

"fetch 코드를 강의의 코드 형식으로 어떻게 변경해야 할까요?"

제가 코드를 어떻게 짜라고 말씀 드릴 수 있는 부분이 아니어서요 🥲

"통신오류 나면서 안되네요."

어떤 통신 오류가 발생했는지 오류메시지를 확인하고 수정하면 되지 않을까요? (어떤 오류인지 질문에서는 알기가 힘드네요 🥲)

 

포스트맨과 현재 오류가 나는 웹의 HTTP Request 가 어떻게 다른지 비교해보는 것도 좋을 것 같아요~!

질문드립니다.

0

32

0

unplugin-vue-components 질문드립니다.

0

39

2

강의듣다가 헷갈려서 질문드립니다.

0

34

1

와 짐코딩님 강의 들으면서 느끼는게 많네요.

0

33

1

질문드립니다.

0

32

2

라우터 인스톨 후 실행안됨

1

49

2

코드 자동 포매팅 질문

0

68

2

필터 watchEffect 질문입니다.

0

52

1

json-server 오류가 다른게 뜨네요

0

114

1

미리보기가 안됩니당...

0

69

2

unplugin-vue-components

0

83

2

TypeError 질문

0

52

1

v-model="show" :show="show" 같이 사용?

1

57

1

hash 모드 배포의 필요성?

0

61

2

.eslintrc.cjs 가 없습니다

0

95

2

title,content값이 비어서 저장되는데 제가 혹시 어떤 부분을 잘못 작성했는지 ㅜㅜ 알고싶습니다.

0

98

3

_title_like: "", 문의드려요 해당 값을 설정하면 list가 아에 안나옵니다.

0

64

1

@click.prevent="params._page = pageNum"> 에 .value를 안쓰는 이유가 궁금합니다.

0

72

2

중첩된 컴포넌트 문제

0

75

2

교안에 있는 부분이 아닌가요?

0

109

2

useAxios Proxy(Object) RefImpl

0

114

1

axios timeout

0

330

3

강의와 상관은 없지만, 궁금한 점이 있어 질문드립니다.

0

123

2

컴포넌트 분리 부분에서 오류가 나요ㅠㅠ

0

169

2