import React, {useEffect, useState} from 'react'; import {useLocation} from 'react-router-dom'; import {View} from 'react-native'; import { login, getProfile as getKakaoProfile, logout, unlink, } from '@react-native-seoul/kakao-login'; import ResultViewWeb from './ResultViewWeb'; const RestApiKey = 'aa0293e157b3b865a943deade9a3c1a8'; const redirectUrl = 'http://localhost:3000'; const kakaoUrl = `https://kauth.kakao.com/oauth/authorize?client_id=${RestApiKey}&redirect_uri=${redirectUrl}&response_type=code`; function Login() { const location = useLocation(); const [token, setToken] = useState(''); const [type, setType] = useState<'login' | 'profile' | 'logout' | 'unlink'>(); const [state, setState] = useState(); const signInWithKakao = async (codeWeb: string): Promise => { try { const {access_token} = await login({ restApiKeyWeb: RestApiKey, redirectUrlWeb: redirectUrl, codeWeb, }); setType('login'); setState(access_token); setToken(access_token); } catch (error) { console.log(error, 'error'); } }; const signOutWithKakao = async (tokenWeb: string): Promise => { if (!tokenWeb) { alert('로그인을 먼저 진행해 주세요'); return; } try { const message = await logout(tokenWeb); setType('logout'); setState(message); setToken(''); } catch (err) { console.error('signOut error', err); } }; const getProfile = async (tokenWeb: string): Promise => { if (!tokenWeb) { alert('로그인을 먼저 진행해 주세요'); return; } try { const data = await getKakaoProfile(tokenWeb); setType('profile'); setState(data.properties); } catch (error) { console.log(error, 'error'); } }; const unlinkKakao = async (tokenWeb: string): Promise => { if (!tokenWeb) { alert('로그인을 먼저 진행해 주세요'); return; } try { const message = await unlink(tokenWeb); setType('unlink'); setState(message); setToken(''); } catch (err) { console.error('signOut error', err); } }; useEffect(() => { if (location.search) { signInWithKakao(location.search.split('code=')[1]); } }, []); return ( 카카오 로그인 ); } export default Login;