CatHand Blog

アプリ開発やMac弄り

macOSのFirebase SDKでTwitter認証

公式ドキュメントのやり方は以下のようになっています。

firebase.google.com

ですが、macOSでは getCredentialWith() が呼べません。

    API_UNAVAILABLE(macos, tvos, watchos);

となっています。なので別のアプローチが必要です。

FIRTwitterAuthProviderは

+ (FIRAuthCredential *)credentialWithToken:(NSString *)token secret:(NSString *)secret {
  return [[FIRTwitterAuthCredential alloc] initWithToken:token secret:secret];
}

のように accessToken と accessTokenSecret で生成できます。なので、

  • バイスからTwitter認証して accessToken と accessTokenSecret を取得する
  • accessToken と accessTokenSecret から FIRAuthCredential を作成
  • Auth.auth().signIn(with: credential) でFirebaseにサインイン

とするとTwitterログインできます。

        let credential = TwitterAuthProvider.credential(withToken: result.oauth_token, secret: result.oauth_token_secret)
        authDataResult = try await withUnsafeThrowingContinuation({ a in
            Auth.auth().signIn(with: credential) { result, error in
                if let error = error {
                    a.resume(throwing: error)
                } else {
                    a.resume(returning: result)
                }
            }
        })

こんなかんじ。