4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【ios/firebase】初めてのtwitter認証

Last updated at Posted at 2020-10-09

やりたきこと

firebaseを使ったiosアプリでtwitter認証してみる

誰向け?

つい数時間前の自分
 ・WEBバックエンド開発を主な生業
 ・iosアプリ開発は未経験
 ・twitter利用経験なし(アカウントはさっき作った)
 ・公式ドキュメントの手順見ても、どこに追記するのかすら分からん

そんな数時間前の自分に向けてやさしく解説してみる。

環境

Xcode Version 10.1
CocoaPods Version 1.9.3
Swift Version 4.2.1

早速開発

公式 「はじめに」 -> 1 の設定
Firebase/Authをinstall

target 'app' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!

  # Pods for app
  pod 'Firebase/Auth'  <---追加
end
pod update

FirebaseのAuthenticationのtwitter認証の設定を行う

公式 「はじめに」 -> 2,3,4 の設定
スクリーンショット 2020-10-09 7.09.35.png

URL Typesの設定

公式 「Firebase iOS SDK でログインフローを処理するには:」 -> 1の設定

REVERSED_CLIENT_IDの情報を控える
スクリーンショット 2020-10-09 7.19.14.png

URL TypesのURL Schemesに追加
スクリーンショット 2020-10-09 8.50.33.png

実装

「twitterでSign in」ボタンだけ配置して認証/認可を確認
スクリーンショット 2020-10-09 9.05.45.png

実装内容は公式丸パクリ!

ViewController.swift
import UIKit
import Firebase

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func twitterSignInButton(_ sender: Any) {
        var provider = OAuthProvider(providerID: "twitter.com")
        provider.getCredentialWith(nil) { credential, error in
            if error != nil {
                // Handle error.
            }
            if credential != nil {
                Auth().signIn(with: credential) { authResult, error in
                    if error != nil {
                        // Handle error.
                    }
                     // User is signed in.
                }
            }
        }
    }
}

・・・すると、ビルドエラーになります

スクリーンショット 2020-10-09 5.37.18.png

この記事を参考に解決

diff
 import UIKit
 import Firebase
+import FirebaseAuth
 
 class ViewController: UIViewController {
     
+    var twitterProvider : OAuthProvider?
+    
     override func viewDidLoad() {
         super.viewDidLoad()
+        self.twitterProvider = OAuthProvider(providerID:"twitter.com");
     }
     
    @IBAction func twitterSignInButton(_ sender: Any) {
-        var provider = OAuthProvider(providerID: "twitter.com")
-        provider.getCredentialWith(nil) { credential, error in
    @IBAction func twitterSignInButton(_ sender: Any) {
+        self.twitterProvider?.getCredentialWith(_: nil){ (credential, error) in
             if error != nil {
                 // Handle error.
             }
-            if credential != nil {
-                Auth().signIn(with: credential) { authResult, error in
+            if let credential = credential {
+                Auth.auth().signIn(with: credential) { (authResult, error) in
                     if error != nil {
                         // Handle error.
                     }

とりあえず、動かす
スクリーンショット 2020-10-09 6.00.19.png

動いた!

動作確認

「twitter でSign in」ボタンを押すと
スクリーンショット 2020-10-09 6.52.36.png

Sigin Inしても何も実装していないので、最初の画面が出てきちゃいます。
認証されたかはFirebaseの画面で確認
スクリーンショット 2020-10-09 6.53.15.png

大丈夫そう!

最後に

以前、WEBサービスのtwitter認証周りをやったことがあり、
結構大変だった記憶があるのですが、Firebase使うと簡単にできました。
小規模アプリなら活用する機会多いかもしれないです。
これからアプリのほう拡張していきたいと思います。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?