【翻訳】Firebase Authentication: Mandatory Upgrade from SDK v2s

今日ログインできないって言われて気が付いた。むしゃくしゃしたからGoogle翻訳に掛けた。
原文は[これ](https://docs.google.com/document/d/1vpQV8DBQLkIZci7Vh8N4LUHyTkBOsuW5eXE1x8IAqvw/)。

# Firebase Authentication: Mandatory Upgrade from SDK v2s

## 要約
このドキュメントでは、Firebase SDK v2（およびそれ以降）と組み合わされたFirebase認証に影響を与える、今後の必須アップグレードについてまとめています。Firebase SDK v1およびv2の委任された認証機能は、2018年12月18日火曜日に非推奨になる予定です。

## よくある質問

### 1. どうして私はこの通知を受け取ったのでしょうか？

あなたが、Firebase SDK v1またはv2を委任されたエンドユーザ認証に使用したFirebaseプロジェクトのオーナーとしてリストされているためです。2018年12月にサービスが中断されるのを防ぐためには、Firebase SDK v3（またはそれ以上）へのアップデートが必要になります。

予定された停止：

電子メール通知では、SDK v2に影響を及ぼすこのサービスの2つの予定された停止があり、すべての顧客が適切に通知を受け取り、行動する時間が確保されます。次の時間帯には、このサービスは完全に利用できなくなります。

- 10月18日（木）午後12時〜午後2時（PST）
- 11月15日（木）午後12時〜午後4時（PST）

### 2. 影響を受ける製品、サービス、または機能はどれですか？

この廃止は、Firebase v1（2014年10月27日に最後にリリース）とv2 SDK（2016年3月28日に最後にリリース）の委任認証機能に影響します。

委任された認証には、（a）匿名、（b）電子メール/パスワード、または（c）OAuthベースの認証（Facebook | GitHub | Google | Twitter）が含まれます。

Realtime Database SDKの他のすべての機能（カスタムトークン生成を含む）は影響を受けません。

### 3. 大きな変化は何ですか？
	
従来のSDKとv3+の間には基本的な変更がいくつかあります。最も顕著な変更点を以下に示します。

#### SDKの初期化
Firebase SDKの初期化とローディングは、Firebaseのバージョン3から16にかけての成長に対応するため、v2とv3+の間で大幅に変更されました。

Web / Node.js、iOS、Androidアプリを以前のSDKからアップグレードする手順については、既存のガイドを参照してください。

- [Upgrade your Web / Node.js app from Firebase.com](https://firebase.google.com/support/guides/firebase-web#get_a_database_reference)
- [Upgrade your Android app from Firebase.com](https://firebase.google.com/support/guides/firebase-android#get_a_database_reference)
- [Upgrade your iOS app from Firebase.com](https://firebase.google.com/support/guides/firebase-ios#get_a_database_reference)

#### 認証トークンの変更
主にOpenID Connect仕様と互換性があるように、認証トークンの形式と内容が若干変更されました。ただし、これらの認証トークンに対して作成されたセキュリティルールでは、同じuid（一意のユーザーID）とプロバイダ（使用される認証方法）のClaimが残っているため、SDK間でセキュリティルールを一定に保つことができます。

アップグレードされた認証トークンとリンクされたアカウント、メールアドレスが確認されたかどうかなどの対応するセキュリティルールで利用可能な新しいクレームについては、ドキュメントを参照してください。

#### ユーザープロファイルの変更
APIを介して返されるユーザープロファイルレコードが予測可能で一貫性があることを保証するため、完全なエンドユーザーのOAuthプロファイルは、ログイン後のユーザーペイロードと共に返されなくなりました。アプリケーションでカスタムOAuthフィールドが使用されている場合は、レスポンスに含まれるOAuthアクセストークンを使用して、依存する特定のフィールドのOAuthプロバイダへの個別のリクエストを行うことをおすすめします。

#### メソッドシグネチャ
各プラットフォーム間で、APIシグネチャは大幅に変更され、新しい機能を反映し、製品スイート全体でどのフィールドが必要（または返される）かを明確にしています。各プラットフォームのAPIリファレンスへのリンクの一覧は、下記の「ドキュメントはどこにありますか？」の項目でご覧いただけます。

#### エラー処理
メソッドシグネチャの変更に加えて、エラーコードもFirebase SDK内の製品間で内部的に一貫性があるように改名されました。アプリケーションに関連する一連のプラットフォームおよび認証プロバイダに対応するエラーコードを処理するために使用しているメソッドについては、APIリファレンスを参照してください。

#### 電子メール送信/パスワードのリセット電子メール
従来のSDKと最新のSDKの両方にエンドユーザーにパスワードリカバリ電子メールを送信するオプションが含まれていましたが、この電子メールの内容はパスワードリセットコードから完全に管理されたパスワードリセットリンクに変更されました。

さらに、最新のSDKには、新しいアカウントの作成時にユーザーにメールアドレスの確認を要求する電子メールなど、追加の電子メールを送信するオプションも含まれています。

### 4. 私は何をする必要がありますか？私は何を知る必要がありますか？

まず第一に、これらのSDKは、graceful upgradeとrolloutを可能にするために連携して使用できます。アクセスは同じ基本データソースに依存するため、これらを一緒に使用すると、アプリケーションの基礎となるユーザーアカウントに悪影響が及ぶというリスクはありません。

アップグレードを開始するには、使用している認証方法によってアップグレードパスが異なることを考慮してください。

#### 匿名/電子メール+パスワード認証
匿名認証または電子メール/パスワード認証のユーザーの場合、すべての構成はアプリケーション内に内蔵されています。最も有用な出発点は、新しいFirebase SDKを含めて、Firebase Realtime Databaseインスタンスへの参照を以前に初期化していたアプリケーションのルートで初期化することです。

そこから、そのデータベース参照で直接呼び出されるメソッド、特に以下の表に示す認証メソッドを詳しく見てください。これらのメソッドは、いくつかの引数、戻り値、スローまたはリターンする可能性のあるエラーのために、最新のSDKへスワップアウトされる必要があります。

#### OAuth（Facebook | GitHub | Google | Twitter）
上記のAnonymousおよびEmail + Password Authのガイダンスは、これらのOAuthプロバイダにも適用され、いくつかの注意事項が追加されています。

まず、アプリケーションのOAuthリダイレクトURLが最新のSDKで変更されます。そのためこの追加のリダイレクトURL（「コールバックURL」と呼ばれることもあります）をプロバイダのOAuth設定に追加する必要があります。このプロセスを開始するには、[Firebaseコンソール](https://console.firebase.google.com)からプロジェクトの「認証」セクションにアクセスしてください。利用可能な認証プロバイダのリスト内には、アプリケーション+プロバイダペアの特定のリダイレクトURLのリストを含む、リダイレクトURLの設定手順が記載されています。

2つ目に、上記セクション3への注記として、ユーザーペイロードの一部として返されるOAuthプロファイルに関する変更があります。以前は、このセクションでは、OAuthプロバイダのプロファイルエンドポイントで指定されているように、ドキュメント化されていないユーザープロパティのセットが返されましたが、結果はしばしば一貫性がなかったり変化していたりしました。アプリケーションがこのセクションの1つ以上のフィールドに依存している場合は、ユーザーアカウントレコードに返されたOAuthアクセストークンを使用して、アプリケーション内のOAuthプロバイダのAPIに対してこれらのフィールドの特定のクエリを直接作成することをおすすめします。

### 5. アップグレードするとユーザーがログアウト/認証解除されませんか？

ユーザーが従来のSDKを使用してアプリにログインしている場合、新しいSDKでログインしたままにするには少しのコードが必要です。そうでなければ、ユーザーは再度サインインする必要があります。

これを行うためのオープンソースのサンプルコードは、GitHubの[Firebase Auth Migration Helpers](https://github.com/firebase/firebase-auth-migration-helpers)リポジトリで提供されています。Android、iOS、およびWeb用のコードがあります。

### 6. ドキュメントはどこにありますか？

すべてのプラットフォームとプロバイダのための良い出発点としては：

https://firebase.google.com/docs/auth/

Firebase SDK v2 および最新のSDKのドキュメントは、以下のようにプラットフォームと認証プロバイダごとにまとめられています。新旧の比較を簡単にするために、これらは並んでリストされています。


|Web|Legacy Documentation|Latest Documentation
|---|---|---
|Anonymous Login|authAnonymously()|signInAnonymouslyAndRetrieveData()
|Email / Password Login|authWithPassword()|signInAndRetrieveDataWithEmailAndPassword()
||createUser()|firebase.auth.EmailAuthProvider
||changeEmail()|createUserWithEmailAndPassword()
||changePassword()|sendPasswordResetEmail()
||resetPassword()|
||removeUser()|
|OAuth Login|authWithOAuthPopup()|signInWithPopup()
||authWithOAuthRedirect()|signInWithRedirect()
||authWithOAuthToken()|signInWithCredential()
|||firebase.auth.FacebookAuthProvider
|||firebase.auth.GithubAuthProvider
|||firebase.auth.GoogleAuthProvider
|||firebase.auth.TwitterAuthProvider
|Misc.|getAuth()|firebase.auth.Auth
|||onAuth()|onAuthStateChanged()
|||offAuth()|signOut()
|||unAuth()|


|iOS|Legacy Documentation|Latest Documentation
|---|---|---
|Anonymous Login|authAnonymously()|signInAnonymously...()
|Email / Password Login|authUser...()|signInWithEmail()
||createUser...()|createUser()
||changeEmail...()|updateEmail()
||changePassword...()|updatePassword()
||resetPassword...()|sendPasswordResetEmail()
||removeUser...()|delete()
|OAuth Login|authWithOAuthProvider:token()|signInWithCredential()
|||FacebookAuthProvider
|||GitHubAuthProvider
|||GoogleAuthProvider
|||TwitterAuthProvider
|Misc.|observeAuthEvent()|currentUser
||removeAuthEventObserver()|addStateDidChangeListener()
||unauth()|removeStateDidChangeListener()
|||signOut()
|MacOS||Firebase iOS > Community Supported Efforts: macOS and tvOS


|Android|Legacy Documentation|Latest Documentation
|---|---|---
|Anonymous Login|authAnonymously()|signInAnonymously()
|Email / Password Login|authWithPassword()|signInWithEmailAndPassword()
||createUser()|createUserWithEmailAndPassword()
||changeEmail()|updateEmail()
||changePassword()|updatePassword()
||resetPassword()|sendPasswordResetEmail()
||removeUser()|delete()
|OAuth Login|authWithOAuthToken()|signInWithCredential()
||firebase.auth.FacebookAuthProvider
||firebase.auth.GithubAuthProvider
||firebase.auth.GoogleAuthProvider
||firebase.auth.TwitterAuthProvider
|Misc.|getAuth()|getCurrentUser()
||addAuthStateListener()|addAuthStateListener()
||removeAuthStateListener()|removeAuthStateListener()
||unauth()|signOut()

### 7. まだ質問があります。

あなたが困っている場合は、こちらでサポートチームにお問い合わせください

https://firebase.google.com/support/

Firebase開発者コミュニティの継続的な利益のために、追加サポートリクエストや質問が出てくるのに応じて、この文書を更新していきます。

### 8. ありがとうございました

最後に、Firebaseプラットフォームを構築し、Firebaseにアプリケーションを強化するためのインフラストラクチャを信頼していただき、ありがとうございます。

Firebaseプラットフォームで長年培ってきたアプリケーションの創造性、幅広さ、および大成功を込めて誠に驚いています.Firebaseをアプリケーションの構築と成長に最適な場所にするために引き続き努力していきます。

私たちは、あらゆる種類の廃止または移行が苦痛であることを知っており、私たちはそれらを軽く服用しません。このように、私たちは、このプロセス全体を通してあなたをサポートし、必要に応じて質問に答えたり、ガイダンスを提供したりするためにここにいます。サポートチーム、Googleグループ、ドキュメント、またはStackOverflowなど、Firebaseユーザが利用できる多くのリソースをお気軽にご利用ください。