{
    "componentChunkName": "component---src-templates-blog-template-js",
    "path": "/start/",
    "result": {"data":{"cur":{"id":"b50d9862-e9cc-5bb3-bff4-9bd88ea4c271","html":"<h2 id=\"wﾟдﾟw-또-시작\" style=\"position:relative;\"><a href=\"#w%EF%BE%9F%D0%B4%EF%BE%9Fw-%EB%98%90-%EC%8B%9C%EC%9E%91\" aria-label=\"wﾟдﾟw 또 시작 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>w(ﾟДﾟ)w 또 시작</h2>\n<p>티스토리에서 블로그를 운영하다가 벨로그로 옮겨 운영을 하고, 이제는 github.io 페이지를 따로 만들어서 운영을 하게 됐다.\n왜 이렇게 많이 옮겨다녔나라는 생각이 들지만 솔직히 나도 잘 모르겠다.\n여기서 운영하다보면 저곳이 좋아보이고, 그래서 저곳으로 옮기면 이제는 또 다른 쪽이 좋아보이는 심리가 계속 지속 되었던 것 같다.\n이제는 뭔가 온전한 나의 블로그가 생겼다는 느낌을 가지고 정착을 해야 할것 같다.</p>\n<h2 id=\"뭐-할건데\" style=\"position:relative;\"><a href=\"#%EB%AD%90-%ED%95%A0%EA%B1%B4%EB%8D%B0\" aria-label=\"뭐 할건데 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>뭐 할건데?</h2>\n<p>당장은 이전에 운영하던 블로그에서의 글들을 옮겨오고, 이후에는 계속 하던 기술/공부 관련 포스트를 할 것 같다.\n여름방학부터는 이전에 시도해보지 않았던 아예 새로운 분야를 공부하게 되기도 하고, 지금도 조금씩은 하고 있었지만 이제는 정말로 알고리즘 공부도 열심히 해야한다.\n정보처리기사, 토익 등 취업 관련 해서 하는 공부들에 관해서도 올릴 예정이다.</p>\n<div class=\"table-of-contents\">\n<ul>\n<li><a href=\"#w%EF%BE%9F%D0%B4%EF%BE%9Fw-%EB%98%90-%EC%8B%9C%EC%9E%91\">w(ﾟДﾟ)w 또 시작</a></li>\n<li><a href=\"#%EB%AD%90-%ED%95%A0%EA%B1%B4%EB%8D%B0\">뭐 할건데?</a></li>\n</ul>\n</div>","excerpt":"w(ﾟДﾟ)w 또 시작 티스토리에서 블로그를 운영하다가 벨로그로 옮겨 운영을 하고, 이제는 github.io 페이지를 따로 만들어서 운영을 하게 됐다.\n왜 이렇게 많이 옮겨다녔나라는 생각이 들지만 솔직히 나도 잘 모르겠다.\n여기서 운영하다보면 저곳이 좋아보이고, 그래서 저곳으로 옮기면 이제는 또 다른 쪽이 좋아보이는 심리가 계속 지속 되었던 것 같다.\n이제는 뭔가 온전한 나의 블로그가 생겼다는 느낌을 가지고 정착을 해야 할것 같다. 뭐 할건데? 당장은 이전에 운영하던 블로그에서의 글들을 옮겨오고, 이후에는 계속 하던 기술/공부 관련 포스트를 할 것 같다.\n여름방학부터는 이전에 시도해보지 않았던 아예 새로운 분야를 공부하게 되기도 하고, 지금도 조금씩은 하고 있었지만 이제는 정말로 알고리즘 공부도 열심히 해야한다.\n정보처리기사, 토익 등 취업 관련 해서 하는 공부들에 관해서도 올릴 예정이다. w(ﾟДﾟ)w 또 시작 뭐 할건데?","frontmatter":{"date":"June 01, 2022","title":"새 블로그 시작","categories":"기타 featured","author":"김형진","emoji":"🏋️‍♀️"},"fields":{"slug":"/start/"}},"next":null,"prev":{"id":"094a6858-baf4-518c-b591-1e65e9c3c2d4","html":"<p>저번편에서는 Firebase의 설정을 끝마쳤고, 이번편에서는 실제로 구글 로그인 기능을 구현할 차례다.</p>\n<h2 id=\"프로젝트-설정\" style=\"position:relative;\"><a href=\"#%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%84%A4%EC%A0%95\" aria-label=\"프로젝트 설정 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>프로젝트 설정</h2>\n<p>먼저 필요한 패키지들을 설치한다.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">npm</span> <span class=\"token function\">install</span> @react-native-firebase/app @react-native-firebase/auth @react-native-google-signin/google-signin</code></pre></div>\n<p>app 모듈은 Firebase의 기능들을 사용하기 전에 반드시 깔아야 하는 모듈이고, auth 모듈은 계정 기능을 사용할 수 있게 해준다. 그리고 google-signin은 문자 그대로 React에서 구글 로그인 기능을 쉽게 만들어주는 패키지다.</p>\n<p>패키지들을 설치한 이후에는 프로젝트 자체에서의 설정을 해준다.\nandroid 폴더 안에 있는 build.gradle 파일에 들어가 google-services 플러그인을 추가해준다.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">buildscript <span class=\"token punctuation\">{</span>\n  dependencies <span class=\"token punctuation\">{</span>\n    // <span class=\"token punctuation\">..</span>. other dependencies\n    classpath <span class=\"token string\">'com.google.gms:google-services:4.3.10'</span>\n    // Add me --- /<span class=\"token punctuation\">\\</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>다음으로는 android/app 경로 안에 있는 build.gradle 파일에서 플러그인을 적용한다. 경로가 비슷하니 헷갈리지 말자.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">apply plugin: <span class=\"token string\">'com.android.application'</span>\napply plugin: <span class=\"token string\">'com.google.gms.google-services'</span> // <span class=\"token operator\">&lt;</span>- Add this line</code></pre></div>\n<p>auth 모듈도 같은 파일 안에 추가해준다.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">dependencies <span class=\"token punctuation\">{</span>\n    // <span class=\"token punctuation\">..</span>. other dependencies\n    implementation <span class=\"token string\">'com.google.firebase:firebase-auth'</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h2 id=\"로그인-기능-구현\" style=\"position:relative;\"><a href=\"#%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EA%B8%B0%EB%8A%A5-%EA%B5%AC%ED%98%84\" aria-label=\"로그인 기능 구현 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>로그인 기능 구현</h2>\n<p>이젠 정말로 기능 구현을 할 차례다.</p>\n<h3 id=\"appjs\" style=\"position:relative;\"><a href=\"#appjs\" aria-label=\"appjs permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>App.js</h3>\n<p>App.js에 있는 코드를 모두 지우고 필요한 패키지들을 불러오자.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">import</span> React, <span class=\"token punctuation\">{</span> useEffect, useState <span class=\"token punctuation\">}</span> from <span class=\"token string\">'react'</span><span class=\"token punctuation\">;</span>\n<span class=\"token function\">import</span> auth from <span class=\"token string\">'@react-native-firebase/auth'</span><span class=\"token punctuation\">;</span>\n<span class=\"token function\">import</span> <span class=\"token punctuation\">{</span> GoogleSignin <span class=\"token punctuation\">}</span> from <span class=\"token string\">'@react-native-google-signin/google-signin'</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>다음으로는 구글 로그인 기능을 이용하기 위한 webClientId를 google-services.json에서 가져와야 한다.\n이 파일 안에서 client/oauth_client/client_id를 가져오면 되는데, client_type이 3인 것을 가져와야 한다.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">useEffect<span class=\"token punctuation\">((</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token punctuation\">{</span>\n    GoogleSignin.configure<span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\n      webClientId:\n        <span class=\"token string\">'CLIENT_ID'</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>, <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>이로써 Google SDK를 사용할 수 있게 됐다.</p>\n<p>이제는 로그인 버튼을 눌렀을 때 사용자를 로그인 시키는 기능을 만들어보자.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">async <span class=\"token keyword\">function</span> <span class=\"token function-name function\">onGoogleButtonPress</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    const <span class=\"token punctuation\">{</span> idToken <span class=\"token punctuation\">}</span> <span class=\"token operator\">=</span> await GoogleSignin.signIn<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    const googleCredential <span class=\"token operator\">=</span> auth.GoogleAuthProvider.credential<span class=\"token punctuation\">(</span>idToken<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token builtin class-name\">return</span> auth<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>.signInWithCredential<span class=\"token punctuation\">(</span>googleCredential<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>한줄한줄 살펴보자면\n첫번째 줄은 구글에 로그인하면서 유저의 idToken을 가져온다.\n두번째 줄은 가져온 유저의 idToken을 이용하여 Google credential을 생성한다.\n마지막 줄은 생성된 credential을 이용해 사용자를 앱으로 로그인 시킨다.</p>\n<p>다음은 사용자의 접속 유무에 따라서 다른 화면을 보여주는 작업을 해보자.\n사용자가 접속 중일때는 앱의 홈 화면을 보여주고 접속 중이 아닐때는 로그인 화면을 보여주려면 현재 사용자의 상태를 판별하는 state가 필요하다.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">const <span class=\"token punctuation\">[</span>loggedIn, setLoggedIn<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> useState<span class=\"token punctuation\">(</span>false<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n// <span class=\"token punctuation\">..</span>. other codes\n\nauth.onAuthStateChanged<span class=\"token punctuation\">((</span>user<span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>user<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    \tsetLoggedIn<span class=\"token punctuation\">(</span>true<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n    \tsetLoggedIn<span class=\"token punctuation\">(</span>false<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Firebase에서 제공하는 onAuthStateChanged function을 통해 유저의 접속 유무를 판별 할 수 있다.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>loggedIn<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token builtin class-name\">return</span> <span class=\"token operator\">&lt;</span>Home /<span class=\"token operator\">></span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token builtin class-name\">return</span> <span class=\"token operator\">&lt;</span>LoginScreen <span class=\"token assign-left variable\">onGoogleButtonPress</span><span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>onGoogleButtonPress<span class=\"token punctuation\">}</span> /<span class=\"token operator\">></span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>로그인 상태에서는 Home 화면을, 아닐때는 LoginScreen 화면을 보인다.\nonGoogleButtonPress function의 정보를 LoginScreen으로 보낸다.</p>\n<p>이제는 유저에게 보여질 두 화면을 만들 차례다.</p>\n<h3 id=\"loginscreenjs\" style=\"position:relative;\"><a href=\"#loginscreenjs\" aria-label=\"loginscreenjs permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>LoginScreen.js</h3>\n<p>screens 폴더를 생성한 뒤 폴더 안에 LoginScreen.js 파일을 생성한다.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">import</span> React from <span class=\"token string\">'react'</span><span class=\"token punctuation\">;</span>\n<span class=\"token function\">import</span> <span class=\"token punctuation\">{</span> Text, View <span class=\"token punctuation\">}</span> from <span class=\"token string\">'react-native'</span><span class=\"token punctuation\">;</span>\n<span class=\"token function\">import</span> <span class=\"token punctuation\">{</span> GoogleSigninButton <span class=\"token punctuation\">}</span> from <span class=\"token string\">'@react-native-google-signin/google-signin'</span></code></pre></div>\n<p>필요한 모듈들을 가져온다.\n다음으로는 구글 로그인 버튼을 이용한 간단한 페이지를 만든다. 스타일</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token builtin class-name\">export</span> default <span class=\"token keyword\">function</span> LoginiScreen<span class=\"token punctuation\">(</span>props<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token builtin class-name\">return</span> <span class=\"token punctuation\">(</span>\n        <span class=\"token operator\">&lt;</span>View<span class=\"token operator\">></span>\n            <span class=\"token operator\">&lt;</span>Text<span class=\"token operator\">></span>Login Page<span class=\"token operator\">&lt;</span>/Text<span class=\"token operator\">></span>\n            <span class=\"token operator\">&lt;</span>GoogleSigninButton <span class=\"token assign-left variable\">onPress</span><span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>props.onGoogleButtonPress<span class=\"token punctuation\">}</span> /<span class=\"token operator\">></span>\n        <span class=\"token operator\">&lt;</span>/View<span class=\"token operator\">></span>\n    <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h3 id=\"homejs\" style=\"position:relative;\"><a href=\"#homejs\" aria-label=\"homejs permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Home.js</h3>\n<p>screens 폴더 안에 Home.js 파일을 만들고 필요한 모듈들을 불러온다.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">import</span> React from <span class=\"token string\">'react'</span><span class=\"token punctuation\">;</span>\n<span class=\"token function\">import</span> <span class=\"token punctuation\">{</span> Text, View, Image, Button <span class=\"token punctuation\">}</span> from <span class=\"token string\">'react-native'</span><span class=\"token punctuation\">;</span>\n<span class=\"token function\">import</span> auth from <span class=\"token string\">'@react-native-firebase/auth'</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>다음은 로그인이 성공했는지를 확인 하기 위해 로그인한 유저의 정보를 불러와 유저의 프로필 사진, 이름, 이메일을 보인다.\nsignOut()을 사용한 로그아웃 버튼도 만들어 준다.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token builtin class-name\">export</span> default <span class=\"token keyword\">function</span> <span class=\"token function-name function\">Home</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  const user <span class=\"token operator\">=</span> auth<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>.currentUser<span class=\"token punctuation\">;</span>\n  <span class=\"token builtin class-name\">return</span> <span class=\"token punctuation\">(</span>\n    <span class=\"token operator\">&lt;</span>View<span class=\"token operator\">></span>\n      <span class=\"token operator\">&lt;</span>Text<span class=\"token operator\">></span><span class=\"token punctuation\">{</span>user?.displayName<span class=\"token punctuation\">}</span><span class=\"token operator\">&lt;</span>/Text<span class=\"token operator\">></span>\n      <span class=\"token operator\">&lt;</span>Text<span class=\"token operator\">></span><span class=\"token punctuation\">{</span>user?.email<span class=\"token punctuation\">}</span><span class=\"token operator\">&lt;</span>/Text<span class=\"token operator\">></span>\n      <span class=\"token operator\">&lt;</span>Image <span class=\"token assign-left variable\">source</span><span class=\"token operator\">=</span><span class=\"token punctuation\">{</span><span class=\"token punctuation\">{</span> uri: user?.photoURL <span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span> /<span class=\"token operator\">></span>\n      <span class=\"token operator\">&lt;</span>View<span class=\"token operator\">></span>\n        <span class=\"token operator\">&lt;</span>Button <span class=\"token assign-left variable\">title</span><span class=\"token operator\">=</span><span class=\"token string\">\"Logout\"</span> <span class=\"token assign-left variable\">onPress</span><span class=\"token operator\">=</span><span class=\"token punctuation\">{</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> auth<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>.signOut<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">}</span> /<span class=\"token operator\">></span>\n      <span class=\"token operator\">&lt;</span>/View<span class=\"token operator\">></span>\n    <span class=\"token operator\">&lt;</span>/View<span class=\"token operator\">></span>\n  <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>auth.currentUser function을 사용하면 현재 유저의 정보를 불러 올 수 있다.\nEx) user?.photoURL -> 현재 유저의 구글 계정 프로필 사진</p>\n<h2 id=\"결과\" style=\"position:relative;\"><a href=\"#%EA%B2%B0%EA%B3%BC\" aria-label=\"결과 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>결과</h2>\n<p>LoginScreen\n<img src=\"https://images.velog.io/images/hhjj0506/post/ff9fc80d-fff9-4763-a678-bde9d504b177/image.png\" alt=\"\">\nHome\n<img src=\"https://images.velog.io/images/hhjj0506/post/d4549fe6-a69a-4f90-b71f-d63ae47b236f/image.png\" alt=\"\">\n가시성이 너무 떨어지고, 이미지를 보여주기 위해 간단히 디자인을 따로 했다.</p>\n<h2 id=\"마치며\" style=\"position:relative;\"><a href=\"#%EB%A7%88%EC%B9%98%EB%A9%B0\" aria-label=\"마치며 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>마치며</h2>\n<p>그동안 포스트를 안하다가 갑자기 삘을 받아서 준비도 안된 상태에서 포스트를 하다 보니까 시간도 굉장히 오래걸리고 글도 난잡하게 써졌던 것 같습니다. 글 읽는데 불편한 점이 계셨다면 정말 죄송합니다…</p>\n<p>아마 앞으로는 간단한 리뷰 기능과 찜 기능, 그리고 이 둘과 계정을 이용하여 내가 쓴 리뷰와 찜한 식당 불러오기에 대해서 다뤄볼 것 같습니다.\n채팅 기능도 언젠가는 포스트를 하겠지만 아직은 제가 글로 풀어낼 실력이 안되는 것 같아서 다음으로 미루고요.</p>\n<p>아무튼 긴 글 읽어주셔서 감사합니다!</p>\n<div class=\"table-of-contents\">\n<ul>\n<li>\n<p><a href=\"#%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%84%A4%EC%A0%95\">프로젝트 설정</a></p>\n</li>\n<li>\n<p><a href=\"#%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EA%B8%B0%EB%8A%A5-%EA%B5%AC%ED%98%84\">로그인 기능 구현</a></p>\n<ul>\n<li><a href=\"#appjs\">App.js</a></li>\n<li><a href=\"#loginscreenjs\">LoginScreen.js</a></li>\n<li><a href=\"#homejs\">Home.js</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"#%EA%B2%B0%EA%B3%BC\">결과</a></p>\n</li>\n<li>\n<p><a href=\"#%EB%A7%88%EC%B9%98%EB%A9%B0\">마치며</a></p>\n</li>\n</ul>\n</div>","frontmatter":{"date":"June 02, 2022","title":"[React Native] Firebase를 이용한 Android 구글 로그인 2","categories":"개발 featured","author":"김형진","emoji":"📱"},"fields":{"slug":"/react-native-google-login-2/"}},"site":{"siteMetadata":{"siteUrl":"https://hhjj0506.github.io","comments":{"utterances":{"repo":"hhjj0506/hhjj0506.github.io"}}}}},"pageContext":{"slug":"/start/","nextSlug":"","prevSlug":"/react-native-google-login-2/"}},
    "staticQueryHashes": ["1073350324","1956554647","2938748437"]}