<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://sjjeong.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://sjjeong.github.io/" rel="alternate" type="text/html" /><updated>2026-04-05T11:24:17+00:00</updated><id>https://sjjeong.github.io/feed.xml</id><title type="html">Dino’s Dev</title><subtitle>An amazing website.</subtitle><author><name>SeokJun Dino Jeong</name><email>sjjeong1225@gmail.com</email></author><entry><title type="html">iOS Firebase Authentication</title><link href="https://sjjeong.github.io/ios/firebase/ios-firebase-authentication-email/" rel="alternate" type="text/html" title="iOS Firebase Authentication" /><published>2019-12-10T07:00:00+00:00</published><updated>2019-12-10T07:00:00+00:00</updated><id>https://sjjeong.github.io/ios/firebase/ios-firebase-authentication-email</id><content type="html" xml:base="https://sjjeong.github.io/ios/firebase/ios-firebase-authentication-email/"><![CDATA[<h1 id="ios-프로젝트에-firebase-authentication-추가하기">iOS 프로젝트에 Firebase Authentication 추가하기</h1>

<p>FirebaseUI를 이용해서 빠르고 쉽게 로그인 기능을 만들어 보겠습니다.</p>

<p>시작하기전에 Firebase 기능을 사용하려면 Firebase에 프로젝트를 추가해야만 합니다.<br />
프로젝트 추가하는 방법이 궁금하다면 <a href="https://sjjeong.github.io/ios/firebase/setup-ios-firebase/">iOS Firebase 셋팅</a> 글을 참고해주세요.</p>

<h2 id="1-podfile에-firebase-auth-추가하기">1. Podfile에 Firebase Auth 추가하기</h2>

<p>iOS Firebase 셋팅이 끝났다면</p>
<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">pod</span> <span class="err">'</span><span class="kt">Firebase</span><span class="o">/</span><span class="kt">Analytics</span><span class="err">'</span>
</code></pre></div></div>
<p>가 추가되어 있을 거에요.</p>

<p>그러면 그 아래에다가</p>
<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">pod</span> <span class="err">'</span><span class="kt">FirebaseAuth</span><span class="err">'</span>
</code></pre></div></div>
<p>를 추가해주시면 됩니다.</p>

<p><img src="/assets/posts/2019-12-10/firebaseui-pod-01.png" alt="image" /></p>

<p><code class="language-plaintext highlighter-rouge">pod install</code>명령어를 터미널에서 실행하고 기다려줍니다.</p>

<p><img src="/assets/posts/2019-12-10/firebaseui-pod-install.png" alt="image" /></p>

<p>pod install 성공!</p>

<h2 id="2-authentication-활성화-하기">2. Authentication 활성화 하기</h2>

<p>Firebase를 이용해서 로그인 기능을 만드려면 우선 콘솔에서 어떤 로그인을 활성화 해줄 것인지 정해야 합니다.</p>

<ol>
  <li>
    <p><code class="language-plaintext highlighter-rouge">Authentication</code> 선택
<img src="/assets/posts/2019-12-10/firebase-auth-enable-01.png" alt="image" /></p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">로그인 방법</code> 선택
<img src="/assets/posts/2019-12-10/firebase-auth-enable-02.png" alt="image" /></p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">지원할 방식</code> 선택
<img src="/assets/posts/2019-12-10/firebase-auth-enable-03.png" alt="image" /></p>
  </li>
</ol>

<h2 id="3-swiftui에-layout-추가하기">3. SwiftUI에 layout 추가하기</h2>

<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">import</span> <span class="kt">SwiftUI</span>
<span class="kd">import</span> <span class="kt">FirebaseAuth</span>

<span class="kd">struct</span> <span class="kt">ContentView</span><span class="p">:</span> <span class="kt">View</span> <span class="p">{</span>
    
    <span class="kd">@State</span> <span class="k">var</span> <span class="nv">email</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="s">""</span>
    <span class="kd">@State</span> <span class="k">var</span> <span class="nv">password</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="s">""</span>

    <span class="k">var</span> <span class="nv">body</span><span class="p">:</span> <span class="kd">some</span> <span class="kt">View</span> <span class="p">{</span>
        <span class="kt">VStack</span><span class="p">(</span><span class="nv">alignment</span><span class="p">:</span> <span class="o">.</span><span class="n">center</span><span class="p">)</span> <span class="p">{</span>
            <span class="kt">Text</span><span class="p">(</span><span class="s">"Firebase Authentication"</span><span class="p">)</span>
                <span class="o">.</span><span class="nf">padding</span><span class="p">(</span><span class="o">.</span><span class="n">bottom</span><span class="p">)</span>
            <span class="kt">HStack</span> <span class="p">{</span>
                <span class="kt">Text</span><span class="p">(</span><span class="s">"Email"</span><span class="p">)</span>
                    <span class="o">.</span><span class="nf">frame</span><span class="p">(</span><span class="nv">width</span><span class="p">:</span> <span class="mf">100.0</span><span class="p">,</span> <span class="nv">alignment</span><span class="p">:</span> <span class="o">.</span><span class="n">trailing</span><span class="p">)</span>
                <span class="kt">TextField</span><span class="p">(</span><span class="s">"email@sample.com"</span><span class="p">,</span> <span class="nv">text</span><span class="p">:</span> <span class="err">$</span><span class="n">email</span><span class="p">)</span>
            <span class="p">}</span>
            <span class="o">.</span><span class="nf">frame</span><span class="p">(</span><span class="nv">width</span><span class="p">:</span> <span class="mf">300.0</span><span class="p">)</span>
            <span class="kt">HStack</span> <span class="p">{</span>
                <span class="kt">Text</span><span class="p">(</span><span class="s">"Password"</span><span class="p">)</span>
                    <span class="o">.</span><span class="nf">multilineTextAlignment</span><span class="p">(</span><span class="o">.</span><span class="n">leading</span><span class="p">)</span>
                    <span class="o">.</span><span class="nf">frame</span><span class="p">(</span><span class="nv">width</span><span class="p">:</span> <span class="mf">100.0</span><span class="p">,</span> <span class="nv">alignment</span><span class="p">:</span> <span class="o">.</span><span class="n">trailing</span><span class="p">)</span>
                <span class="kt">SecureField</span><span class="p">(</span><span class="s">"********"</span><span class="p">,</span> <span class="nv">text</span><span class="p">:</span> <span class="err">$</span><span class="n">password</span><span class="p">)</span>
            <span class="p">}</span>
            <span class="o">.</span><span class="nf">frame</span><span class="p">(</span><span class="nv">width</span><span class="p">:</span> <span class="mf">300.0</span><span class="p">)</span>
            <span class="kt">Button</span><span class="p">(</span><span class="nv">action</span><span class="p">:</span> <span class="p">{</span>
                <span class="kt">Auth</span><span class="o">.</span><span class="nf">auth</span><span class="p">()</span>
                    <span class="o">.</span><span class="nf">createUser</span><span class="p">(</span><span class="nv">withEmail</span><span class="p">:</span> <span class="k">self</span><span class="o">.</span><span class="n">email</span><span class="p">,</span> <span class="nv">password</span><span class="p">:</span> <span class="k">self</span><span class="o">.</span><span class="n">password</span><span class="p">)</span> <span class="p">{</span> <span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="n">error</span><span class="p">)</span> <span class="k">in</span>
                    
                <span class="p">}</span>
            <span class="p">})</span> <span class="p">{</span>
                <span class="kt">Text</span><span class="p">(</span><span class="s">"Sign up"</span><span class="p">)</span>
            <span class="p">}</span>
        <span class="p">}</span>
    <span class="p">}</span>
    
<span class="p">}</span>
</code></pre></div></div>

<p><img src="/assets/posts/2019-12-10/firebase-auth-result-init.png" alt="image" /></p>

<p>코드를 작성하면 실제 화면은 이렇게 나옵니다.</p>

<p>Email과 Password를 입력하고 Sign up 버튼을 누르면</p>
<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">Auth</span><span class="o">.</span><span class="nf">auth</span><span class="p">()</span>
    <span class="o">.</span><span class="nf">createUser</span><span class="p">(</span><span class="nv">withEmail</span><span class="p">:</span> <span class="k">self</span><span class="o">.</span><span class="n">email</span><span class="p">,</span> <span class="nv">password</span><span class="p">:</span> <span class="k">self</span><span class="o">.</span><span class="n">password</span><span class="p">)</span> <span class="p">{</span> <span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="n">error</span><span class="p">)</span> <span class="k">in</span>
    
<span class="p">}</span>
</code></pre></div></div>
<p>코드를 실행 시켜서 Sign up을 진행합니다.</p>

<p><img src="/assets/posts/2019-12-10/firebase-auth-result-device.png" alt="image" /></p>

<p>이렇게 입력을 하고 <code class="language-plaintext highlighter-rouge">Sign up</code> 버튼을 누르면</p>

<p><img src="/assets/posts/2019-12-10/firebase-auth-result-web.png" alt="image" /></p>

<p>정상적으로 추가 된 것을 확인 할 수 있습니다.</p>]]></content><author><name>SeokJun Dino Jeong</name><email>sjjeong1225@gmail.com</email></author><category term="ios" /><category term="firebase" /><category term="ios" /><category term="swift" /><category term="firebase" /><category term="authentication" /><summary type="html"><![CDATA[iOS 프로젝트에 Firebase Authentication 추가하기]]></summary></entry><entry><title type="html">iOS Firebase 셋팅</title><link href="https://sjjeong.github.io/ios/firebase/setup-ios-firebase/" rel="alternate" type="text/html" title="iOS Firebase 셋팅" /><published>2019-12-07T17:10:00+00:00</published><updated>2019-12-07T17:10:00+00:00</updated><id>https://sjjeong.github.io/ios/firebase/setup-ios-firebase</id><content type="html" xml:base="https://sjjeong.github.io/ios/firebase/setup-ios-firebase/"><![CDATA[<h1 id="ios-프로젝트에-firebase-project-추가하기">iOS 프로젝트에 Firebase project 추가하기</h1>

<h2 id="1-앱-등록">1. 앱 등록</h2>
<p><img src="/assets/posts/2019-12-08/add_firebase_project_01.png" alt="image" /></p>

<p>기존 Firebase project에서 iOS 앱을 추가하면 위 그림과 같은 화면이 나오게 됩니다.<br />
여기서 <code class="language-plaintext highlighter-rouge">iOS 번들 ID</code>를 추가해줘야 하는데 xcode에서 프로젝트를 만들 때 입력 했던 Bundle Identifier를 입력해주면 됩니다.</p>

<p><img src="/assets/posts/2019-12-08/add_ios_project.png" alt="image" /></p>

<p>저는 이렇게 <code class="language-plaintext highlighter-rouge">com.dino.FirebaseStudySample</code>라고 Bundle Identifier를 만들었습니다.</p>

<p><img src="/assets/posts/2019-12-08/add_firebase_project_02.png" alt="image" /></p>

<p><code class="language-plaintext highlighter-rouge">앱 등록</code>에서 <code class="language-plaintext highlighter-rouge">iOS 번들 ID</code>에 본인이 프로젝트의 <code class="language-plaintext highlighter-rouge">Bundle Identifier</code>를 추가하고 <code class="language-plaintext highlighter-rouge">앱 등록</code> 버튼을 눌러줍니다.</p>

<h2 id="2-구성-파일-다운로드">2. 구성 파일 다운로드</h2>
<p><img src="/assets/posts/2019-12-08/add_firebase_project_03.png" alt="image" /></p>

<p>그림에서 보는 것 처럼 <code class="language-plaintext highlighter-rouge">GoogleService-Info.plist 다운로드</code>를 눌러 파일을 다운 받습니다.</p>

<p><img src="/assets/posts/2019-12-08/add_firebase_project_04.png" alt="image" /></p>

<p>다운 받은 파일은 그림처럼 프로젝트의 루트에 추가해 줍니다.</p>

<h2 id="3-firebase-sdk-추가">3. Firebase SDK 추가</h2>
<p><img src="/assets/posts/2019-12-08/add_firebase_project_05.png" alt="image" /></p>

<p>terminal을 열고 프로젝트의 루트 경로까지 이동을 합니다.</p>
<blockquote>
  <p>terminal에서 directory 이동은 <code class="language-plaintext highlighter-rouge">cd</code> 명령어를 사용합니다.</p>
</blockquote>

<p><img src="/assets/posts/2019-12-08/add_firebase_project_06.png" alt="image" /></p>

<p>이동하고 나서 <code class="language-plaintext highlighter-rouge">pod init</code>라고 명령어를 실행하고 <code class="language-plaintext highlighter-rouge">ls</code>명령어로 확인해보면 <code class="language-plaintext highlighter-rouge">Podfile</code>이 추가 된 것을 확인 할 수 있습니다.</p>
<blockquote>
  <p>만약 pod 명령어가 없다면 <a href="https://stackoverflow.com/questions/20755044/how-to-install-cocoapods">pod 명령어 설치 방법</a>을 따라하면 됩니다.</p>
</blockquote>

<p><img src="/assets/posts/2019-12-08/add_firebase_project_07.png" alt="image" /></p>

<p><code class="language-plaintext highlighter-rouge">open PodFile</code>명령어를 실행하면 Podfile를 편집할 수 있는 <code class="language-plaintext highlighter-rouge">텍스트 편집기</code> 앱이 실행 됩니다.<br />
파일 내부에 <code class="language-plaintext highlighter-rouge">pod 'Firebase/Analytics'</code>를 추가하고 저장을 합니다.</p>

<p><img src="/assets/posts/2019-12-08/add_firebase_project_08.png" alt="image" /></p>

<p>그 다음에 <code class="language-plaintext highlighter-rouge">pod install</code> 명령어를 실행 합니다.</p>

<p><img src="/assets/posts/2019-12-08/add_firebase_project_09.png" alt="image" /></p>

<p>install에 성공했다면 위 그림처럼 나오게 됩니다.</p>

<h2 id="4-초기화-코드-추가">4. 초기화 코드 추가</h2>
<p><img src="/assets/posts/2019-12-08/add_firebase_project_10.png" alt="image" /></p>

<p><code class="language-plaintext highlighter-rouge">AppDelegate</code> 클래스를 열고</p>
<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">import</span> <span class="kt">Firebase</span>
</code></pre></div></div>
<p>Firebase를 import 한 다음에</p>
<div class="language-swift highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">func</span> <span class="nf">application</span><span class="p">(</span><span class="n">_</span> <span class="nv">application</span><span class="p">:</span> <span class="kt">UIApplication</span><span class="p">,</span> <span class="n">didFinishLaunchingWithOptions</span> <span class="nv">launchOptions</span><span class="p">:</span> <span class="p">[</span><span class="kt">UIApplication</span><span class="o">.</span><span class="kt">LaunchOptionsKey</span><span class="p">:</span> <span class="kt">Any</span><span class="p">]?)</span> <span class="o">-&gt;</span> <span class="kt">Bool</span> <span class="p">{</span>
    <span class="c1">// Override point for customization after application launch.</span>
    <span class="kt">FirebaseApp</span><span class="o">.</span><span class="nf">configure</span><span class="p">()</span>
    <span class="k">return</span> <span class="kc">true</span>
<span class="p">}</span>
</code></pre></div></div>
<p>FirebaseApp.configure() 코드를 추가해줍니다.</p>

<blockquote>
  <p>만약 <code class="language-plaintext highlighter-rouge">import Firebase</code>에서 <code class="language-plaintext highlighter-rouge">Could not build Objective-C module 'Firebase'</code>에러가 발생한다면 <a href="https://stackoverflow.com/questions/48727206/firebase-cocoapods-error-message-could-not-build-objective-c-module-firebase/48728282">firebase import 에러 수정 방법</a>을 따라하면 됩니다.</p>
</blockquote>

<h2 id="5-앱을-실행하여-설치-확인">5. 앱을 실행하여 설치 확인</h2>

<p><img src="/assets/posts/2019-12-08/add_firebase_project_11.png" alt="image" />
<img src="/assets/posts/2019-12-08/add_firebase_project_12.png" alt="image" /></p>

<p>Run을 해서 앱을 실행하고 Google 서버와 통신을 성공하면 위 그림처럼 <code class="language-plaintext highlighter-rouge">앱에 Firebase를 추가했습니다.</code> 메시지가 나오게 됩니다.</p>]]></content><author><name>SeokJun Dino Jeong</name><email>sjjeong1225@gmail.com</email></author><category term="ios" /><category term="firebase" /><category term="ios" /><category term="swift" /><category term="firebase" /><summary type="html"><![CDATA[iOS 프로젝트에 Firebase project 추가하기]]></summary></entry></feed>