GitHub 認証をアプリに統合して、ユーザーが Firebase での認証に GitHub アカウントを使用できるようにすることができます。
認証されたユーザーは、対象ユーザーが制限された Firebase Realtime Database と Cloud Storage のデータにアクセスできます。
準備
- Firebase を iOS プロジェクトに追加します。
Podfileに次のポッドをインクルードします。pod 'Firebase/Auth'
- GitHub でデベロッパー アプリケーションとしてアプリを登録し、アプリの OAuth 2.0 クライアント ID とクライアント シークレットを取得します。
- GitHub 認証を有効にします。
- Firebase コンソールで [Authentication] セクションを開きます。
- [ログイン方法] タブで [GitHub] を有効にし、GitHub から取得した OAuth 2.0 の [クライアント ID] と [クライアント シークレット] を指定します。
- 次に、GitHub アプリの構成にあるアプリ設定ページで、Firebase OAuth リダイレクト URI(
my-app-12345.firebaseapp.com/__/auth/handlerなど)を認証コールバック URL として設定します。
Firebase で認証する
- デベロッパー向けドキュメントに沿って GitHub 認証をアプリに統合します。ウェブ アプリケーション フローを使用して、GitHub からの OAuth 2.0 コールバックを処理するカスタム URL スキームをアプリに設定します。GitHub のログインフローの最後に OAuth 2.0 アクセス トークンを受け取ります。
UIApplicationDelegateで Firebase モジュールをインポートします。Swift
import Firebase
Objective-C
@import Firebase;
FirebaseApp共有インスタンスを構成します。通常はアプリケーションのapplication:didFinishLaunchingWithOptions:メソッドで行います。Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- ユーザーが GitHub でのログインに成功したら、
didCompleteWithResult:error:の実装で、GitHub からの OAuth 2.0 アクセス トークンを Firebase 認証情報と交換します。Swift
let credential = GitHubAuthProvider.credential(withToken: accessToken)Objective-C
FIRAuthCredential *credential = [FIRGitHubAuthProvider credentialWithToken:accessToken]; - 最後に、Firebase 認証情報を使用して Firebase での認証を行います。
Swift
Auth.auth().signInAndRetrieveData(with: credential) { (authResult, error) in if let error = error { // ... return } // User is signed in // ... }Objective-C
[[FIRAuth auth] signInAndRetrieveDataWithCredential:credential completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { if (error) { // ... return; } // User successfully signed in. Get user data from the FIRUser object if (authResult == nil) { return; } FIRUser *user = authResult.user; // ... }];
次のステップ
ユーザーが初めてログインすると、新しいユーザー アカウントが作成され、ユーザーがログインに使用した認証情報(ユーザー名とパスワード、電話番号、または認証プロバイダ情報)にアカウントがリンクされます。この新しいアカウントは Firebase プロジェクトの一部として保存され、ユーザーのログイン方法にかかわらず、プロジェクトのすべてのアプリでユーザーを識別するために使用できます。
-
アプリでは、
FIRUserオブジェクトからユーザーの基本的なプロフィール情報を取得できます。ユーザーの管理についての記事をご覧ください。 Firebase Realtime Database と Cloud Storage のセキュリティ ルールでは、ログイン済みユーザーの一意のユーザー ID を
auth変数から取得し、それを使用してどのデータをユーザーからアクセス可能にするかを制御できます。
既存のユーザー アカウントに認証プロバイダの認証情報をリンクすることで、ユーザーが複数の認証プロバイダを使用してアプリにログインできるようになります。
ユーザーのログアウトを行うには、signOut: を呼び出します。
Swift
let firebaseAuth = Auth.auth()
do {
try firebaseAuth.signOut()
} catch let signOutError as NSError {
print ("Error signing out: %@", signOutError)
}
Objective-C
NSError *signOutError;
BOOL status = [[FIRAuth auth] signOut:&signOutError];
if (!status) {
NSLog(@"Error signing out: %@", signOutError);
return;
}
さまざまな認証エラーに対応できるようにエラー処理コードを追加することもできます。エラーの処理についての記事をご覧ください。

