やりたきこと
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 の設定
URL Typesの設定
公式 「Firebase iOS SDK でログインフローを処理するには:」 -> 1の設定
実装
「twitterでSign in」ボタンだけ配置して認証/認可を確認
実装内容は公式丸パクリ!
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.
}
}
}
}
}
・・・すると、ビルドエラーになります
この記事を参考に解決
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.
}
動いた!
動作確認
Sigin Inしても何も実装していないので、最初の画面が出てきちゃいます。
認証されたかはFirebaseの画面で確認
大丈夫そう!
最後に
以前、WEBサービスのtwitter認証周りをやったことがあり、
結構大変だった記憶があるのですが、Firebase使うと簡単にできました。
小規模アプリなら活用する機会多いかもしれないです。
これからアプリのほう拡張していきたいと思います。