안녕하세요 프시케입니다.
이번 포스팅은 저번 포스팅에 이어 접근 토큰으로 동의 항목의 정보와
접근 토큰을 asyncStorage에 넣고
카카오 로그인 종료 후 회원가입 화면으로 이동하는 기능을 만들어 보겠습니다.
먼저 지난 kakaoLogin.js 코드에서 AccessToken을 console.log로 찍어보았습니다.
이 AccessToken으로 동의 항목의 정보 조회는 아래의 코드와 같습니다.
해당 정보들을 console.log로 찍어보면
정상적으로 나오는 걸 확인할 수 있습니다.
이제 정보 조회 함수를 삭제하고(다음에 사용)
접근 토큰을 asyncStorage에 넣어보겠습니다.
다음은 kakaoLogin.js의 전체 코드로 카카오 로그인 후 회원가입 화면으로 이동하는 navigation을 추가하였습니다.
import React from "react";
import { View, StyleSheet } from "react-native";
import { WebView } from 'react-native-webview';
import axios from 'axios';
import AsyncStorage from '@react-native-async-storage/async-storage';
import { useNavigation } from "@react-navigation/native";
const REST_API_KEY = 'cd44acce62747b798a83000000000000;
const REDIRECT_URI = 'http://192.xxx.x.xxx:19006/Home';
const INJECTED_JAVASCRIPT = `window.ReactNativeWebView.postMessage('message from webView')`;
const KaKaoLogin = () => {
const navigation = useNavigation();
function KakaoLoginWebView (data) {
const exp = "code=";
var condition = data.indexOf(exp);
if (condition != -1) {
var authorize_code = data.substring(condition + exp.length);
//console.log(authorize_code);
requestToken(authorize_code);
};
}
const requestToken = async (authorize_code) => {
var AccessToken = "none";
axios ({
method: 'post',
params: {
grant_type: 'authorization_code',
client_id: REST_API_KEY,
redirect_uri: REDIRECT_URI,
code: authorize_code,
},
}).then((response) => {
AccessToken = response.data.access_token;
//console.log(AccessToken);
//requestUserInfo(AccessToken);
storeData(AccessToken);
}).catch(function (error) {
console.log('error', error);
})
navigation.navigate("Signup", { screen: "Signup" } );
};
// function requestUserInfo(AccessToken) {
// axios ({
// method: 'GET',
// url: 'https://kapi.kakao.com/v2/user/me',
// headers: {
// Authorization : `Bearer ${AccessToken}`
// },
// }).then((response) => {
// var user_emil = response.data.kakao_account.email;
// var user_range = response.data.kakao_account.age_range;
// var user_gender = response.data.kakao_account.gender;
// console.log("user_emil", user_emil);
// console.log("user_range", user_range);
// console.log("user_gender", user_gender);
// }).catch(function (error) {
// console.log('error', error);
// })
// return;
// }
const storeData = async (returnValue) => {
try {
await AsyncStorage.setItem('userAccessToken', returnValue);
} catch (error) {
}
}
return (
<View style={Styles.container}>
<WebView
style={{ flex: 1 }}
originWhitelist={['*']}
scalesPageToFit={false}
source={{
uri: `https://kauth.kakao.com/oauth/authorize?response_type=code&client_id=${REST_API_KEY}&redirect_uri=${REDIRECT_URI}`,
}}
injectedJavaScript={INJECTED_JAVASCRIPT}
javaScriptEnabled
onMessage={event => { KakaoLoginWebView(event.nativeEvent["url"]); }}
/>
</View>
)
}
export default KaKaoLogin;
const Styles = StyleSheet.create({
container: {
flex: 1,
marginTop: 24,
backgroundColor: '#fff',
},
});
카카오 로그인 후 정상적으로 회원가입 화면으로 이동하였습니다.
지금까지 카카오 로그인 구현을 알아봤습니다.
다음 포스팅은 접근 토큰을 다른 화면에서 불러오는 과정을 알아보도록 하겠습니다.
이번 포스팅은 여기서 마치겠습니다.
'개발 > expo' 카테고리의 다른 글
[expo] 12. expo로 앱 만들기 - asyncStorage 정보 가져오기 (0) | 2023.04.15 |
---|---|
[expo] 10. expo로 앱 만들기 - 카카오 로그인 - 2 (0) | 2023.04.15 |
[expo] 9. expo로 앱 만들기 - 카카오 로그인 - 1 (0) | 2023.04.15 |
[expo] 8. expo로 앱 만들기 - 뒤로 가기 막기, 뒤로 가기 2번 클릭 앱종료 (0) | 2023.04.15 |
[expo] 7. expo로 앱 만들기 - 화면 간 이동 navigation - 4 (0) | 2023.04.15 |