[翻訳] Firebase Authentication / Introduction

[Firebase Authentication (Introduction)](https://firebase.google.com/docs/auth/) を翻訳してみました。
お気づきの点があればコメント頂ければと思います。

以下、関連する投稿へのリンクです。
■ [**Firebase Authentication / Introduction**](http://qiita.com/tnagao3000/items/a73023abd3ea3039975d)
■ [Firebase Authentication / Users in Firebase Projects](http://qiita.com/tnagao3000/items/97d3d42743edd3fa9ea3)
■ [Firebase Authentication / Android / Manage Users](http://qiita.com/tnagao3000/items/0c9d3d09ac3ba1600d23)
■ [Firebase Authentication / Android / Password Authentication](http://qiita.com/tnagao3000/items/a2a36355d740738803b5)
■ [Firebase Authentication / Android / Google Sign-In](http://qiita.com/tnagao3000/items/e602457099ee0fc8161d)
■ [Firebase Authentication / Android / Anonymous Authentication](http://qiita.com/tnagao3000/items/b6c6a63acc8b172a6756)



## Firebase Authentication
> Most apps need to know the identity of a user. Knowing a user's identity allows an app to securely save user data in the cloud and provide the same
personalized experience across all of the user's devices.
>
Firebase Authentication provides backend services, easy-to-use SDKs, and ready-made UI libraries to authenticate users to your app. It supports authentication using passwords, popular federated identity providers like Google, Facebook and Twitter, and more.
>
Firebase Authentication integrates tightly with other Firebase services, and it leverages industry standards like OAuth 2.0 and OpenID Connect, so it can be easily integrated with your custom backend.


ほとんどのアプリは、ユーザーの身元を知っている必要があります。 ユーザーの身元を知ることで、アプリが安全にクラウドにユーザーデータを保存し、ユーザのすべてのデバイスでパーソナライズされた同じエクスペリエンスを提供することができます。

Firebase Authenticationは、あなたのアプリでユーザーを認証させるため、バックエンドサービス、使いやすいSDK、および既製のUIライブラリを提供します。 これは、パスワードを使用した認証や、Google、Facebook、Twitterなどのポピュラーなアイデンティティ・プロバイダほかをサポートしています。

Firebase Authenticationは、Firebaseの他のサービスと緊密に統合し、OAuth2.0やOpenID接続のような業界標準を活用します。　そのため簡単にあなたのカスタムバックエンドと統合できます。


## Key capabilities
>You can sign in users to your Firebase app either by using FirebaseUI as a complete drop-in auth solution or by using the Firebase Authentication SDK to manually integrate one or several sign-in methods into your app.
><table><tr><td>FirebaseUI (beta)</td><td><p>Easily add a complete sign-in system to your app. FirebaseUI provides a drop-in auth solution that handles the UI flows for signing in users with email addresses and passwords, Google Sign-In, and Facebook Login.</p><p>The FirebaseUI Auth component implements best practices for authentication on mobile devices and websites, which can maximize sign-in and sign-up conversion for your app. It also handles edge cases like account recovery and account linking that can be security sensitive and error-prone to handle correctly.
</p><p>FirebaseUI can be easily customized to fit in with the rest of your app's visual style, and it is open source, so you aren't constrained in realizing the user experience you want.</p><p><a href="https://github.com/firebase/FirebaseUI-iOS">iOS</a>&nbsp;&nbsp;<a href="https://github.com/firebase/FirebaseUI-Android">Android</a>&nbsp;&nbsp;<a href="https://github.com/firebase/FirebaseUI-Web">Web</a>&nbsp;&nbsp;</p></tr><tr><td>Email and password based authentication</td>
<td><p>Authenticate users with their email addresses and passwords. The Firebase Authentication SDK provides methods to create and manage users that use their email addresses and passwords to sign in. Firebase Authentication also handles sending password reset emails.
</p><p><a href="https://firebase.google.com/docs/auth/ios/password-auth">iOS</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/android/password-auth">Android</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/web/password-auth">Web</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/cpp/password-auth">C++</a></p></td></tr><tr><td>Federated identity provider integration</td><td>Authenticate users by integrating with federated identity providers. The Firebase Authentication SDK provides methods that allow users to sign in with their Google, Facebook, Twitter, and GitHub accounts.<br/><table><tbody><tr><td>Google</td><td><a href="https://firebase.google.com/docs/auth/ios/google-signin">iOS</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/android/google-signin">Android</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/web/google-signin">Web</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/cpp/google-signin">C++</a></td></tr><tr><td>Facebook</td><td><a href="https://firebase.google.com/docs/auth/ios/facebook-login">iOS</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/android/facebook-login">Android</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/web/facebook-login">Web</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/cpp/facebook-login">C++</a></td></tr><tr><td>Twitter</td><td><a href="https://firebase.google.com/docs/auth/ios/twitter-login">iOS</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/android/twitter-login">Android</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/web/twitter-login">Web</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/cpp/twitter-login">C++</a></td></tr><tr><td>GitHub</td><td><a href="https://firebase.google.com/docs/auth/ios/github-auth">iOS</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/android/github-auth">Android</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/web/github-auth">Web</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/cpp/github-auth">C++</a></td></tr></tbody></table></td></tr><tr><td>Custom auth system integration</td>
<td><p>Connect your app's existing sign-in system to the Firebase Authentication SDK and gain access to Firebase Realtime Database and other Firebase services.</p><p><a href="https://firebase.google.com/docs/auth/ios/custom-auth">iOS</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/android/custom-auth">Android</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/web/custom-auth">Web</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/cpp/custom-auth">C++</a></p>
</td></tr><tr><td>Anonymous auth</td><td><p>Use Firebase features that require authentication without requiring users to sign in first by creating temporary anonymous accounts. If the user later chooses to sign up, you can upgrade the anonymous account to a regular account, so the user can continue where they left off.</p><p><a href="https://firebase.google.com/docs/auth/ios/anonymous-auth" >iOS</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/android/anonymous-auth" >Android</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/web/anonymous-auth" >Web</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/cpp/anonymous-auth" >C++</a></p></td></tr></table>  

あなたは完全な代替の認証ソリューションとしてFirebase UIを使用するか、またはFirebase Authentication SDKを使用して手動で１つまたはいくつかのサインインメソッドをあなたのアプリに統合することにより、ユーザーをFirebase アプリにサインインさせることが出来ます。
<table><tr><td>FirebaseUI (beta)</td><td><p>アプリに簡単に完全なログインシステムを追加します。　FirebaseUIは、メールアドレスとパスワード、またはGoogleサインイン、またはFacebookログインによるユーザー認証のためのUIフローを扱う代替の認証ソリューションを提供します。</p>

<p>FirebaseUI Authコンポーネントは、あなたのアプリへのサインイン、サインアップのコンバージョンを最大化するモバイルデバイスとウェブサイトでの認証のベストプラクティスを実装しています。　それはまた、セキュリティ的に注意が必要で間違いを起こしがちなアカウントの復旧やアカウントのリンクのような稀なケースも正しく扱います。</p>

<p>FirebaseUIは簡単にアプリの残りの部分の見た目と合うようにカスタマイズできます。　そして、それはオープンソースなので、あなたが望むユーザーエクスペリエンスの実現が制限されることはありません。</p>

<p><a href="https://github.com/firebase/FirebaseUI-iOS">iOS</a>&nbsp;&nbsp;<a href="https://github.com/firebase/FirebaseUI-Android">Android</a>&nbsp;&nbsp;<a href="https://github.com/firebase/FirebaseUI-Web">Web</a>&nbsp;&nbsp;</p></tr><tr><td>Email and password based authentication</td>
<td>

<p>ユーザーのメールアドレスとパスワードを使ってユーザー認証します。　Firebase Authentication SDKは、サインインにメールアドレスとパスワードを使用するユーザーを作成し、管理するメソッドを提供します。　また、Firebase Authenticationはパスワードリセット用のメールの送信も扱います。</p>

<p><a href="https://firebase.google.com/docs/auth/ios/password-auth">iOS</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/android/password-auth">Android</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/web/password-auth">Web</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/cpp/password-auth">C++</a></p></td></tr><tr><td>Federated identity provider integration</td><td>
アイデンティティ・プロバイダとの統合により、ユーザーを認証します。　Firebase Authentication SDKはユーザーのGoogle、Facebook、TwitterまたはGitHubのアカウントでサインイン出来るメソッドを提供します。<br/>
<br/><table><tbody><tr><td>Google</td><td><a href="https://firebase.google.com/docs/auth/ios/google-signin">iOS</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/android/google-signin">Android</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/web/google-signin">Web</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/cpp/google-signin">C++</a></td></tr><tr><td>Facebook</td><td><a href="https://firebase.google.com/docs/auth/ios/facebook-login">iOS</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/android/facebook-login">Android</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/web/facebook-login">Web</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/cpp/facebook-login">C++</a></td></tr><tr><td>Twitter</td><td><a href="https://firebase.google.com/docs/auth/ios/twitter-login">iOS</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/android/twitter-login">Android</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/web/twitter-login">Web</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/cpp/twitter-login">C++</a></td></tr><tr><td>GitHub</td><td><a href="https://firebase.google.com/docs/auth/ios/github-auth">iOS</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/android/github-auth">Android</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/web/github-auth">Web</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/cpp/github-auth">C++</a></td></tr></tbody></table></td></tr><tr><td>Custom auth system integration</td>
<td><p>あなたのアプリの既存のサインイン システムをFirebase Authentication SDKに繋ぎ、Firebase Realtime Databaseや他のFirebase servicesへのアクセス権を得ます。</p><p><a href="https://firebase.google.com/docs/auth/ios/custom-auth">iOS</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/android/custom-auth">Android</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/web/custom-auth">Web</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/cpp/custom-auth">C++</a></p>
</td></tr><tr><td>Anonymous auth</td><td><p>一時的な匿名アカウントの作成により、認証を必要とするFirebaseの機能をユーザーに初回のサインインを要求せずに使用します。　後でユーザーがサインアップすることを選択した場合は、匿名アカウントを通常アカウントにアップグレードできます。　なのでユーザーは中断したところから続行することができます。</p><p><a href="https://firebase.google.com/docs/auth/ios/anonymous-auth" >iOS</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/android/anonymous-auth" >Android</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/web/anonymous-auth" >Web</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/cpp/anonymous-auth" >C++</a></p></td></tr></table>  

## How does it work?
>
To sign a user into your app, you first get authentication credentials from the user. These credentials can be the user's email address and password, or an OAuth token from a federated identity provider. Then, you pass these credentials to the Firebase Authentication SDK. Our backend services will then verify those credentials and return a response to the client.
>
After a successful sign in, you can access the user's basic profile information, and you can control the user's access to data stored in other Firebase products. You can also use the provided authentication token to verify the identity of users in your own backend services.
>
<strong>Note:</strong> By default, authenticated users can read and write data to the Firebase Realtime Database and Firebase Storage. You can control the access of those users by modifying your <a href="https://firebase.google.com/docs/database/security/index">Firebase Database Rules</a> and <a href="https://firebase.google.com/docs/storage/security/index">Storage Security Rules</a>.


ユーザーにあなたのアプリにサインさせるためには、まず最初にユーザーから認証証明を取得します。　これらの証明は、ユーザーのメールアドレスとパスワード、またはアイデンティティ・プロバイダのOAuthトークンになります。　そして、あなたはFirebase Authentication SDKにこれらの証明を渡します。　我々のバックエンド・サービスは、それらの証明を確認してクライアントに応答を返します。

正常にサインインしたのち、あなたはユーザーの基本的なプロフィール情報にアクセスできます。　そしてあなたは他のFirebase productsに格納されたデータへのユーザーのアクセスを制御できます。　またあなたは提供された認証トークンを、あなたの独自のバックエンドサービス内のユーザーの同一性の確認に使用できます。

<strong>注：</strong>デフォルトでは、認証されたユーザーはFirebase Realtime DatabaseとFirebase Storageへのデータの読み書きが出来ます。　あなたは[Firebase Database Rules](https://firebase.google.com/docs/database/security/index)と[Storage Security Rules](https://firebase.google.com/docs/storage/security/index)を編集することにより、それらのユーザーのアクセスをコントロールできます。

## Implementation paths
>
<table><tbody><tr><th colspan="3">Using FirebaseUI Auth (beta)</th></tr><tr><td>1</td><td><strong>Set up sign-in methods</strong></td><td>For email address and password sign-in and any federated identity providers you want to support, enable them in the Firebase console and complete any configuration required by the identity provider, such as setting your OAuth redirect URL.</td></tr><tr><td>2</td><td><strong>Customize the sign-in UI</strong></td><td>You can customize the sign-in UI by setting FirebaseUI options, or fork the code on GitHub to customize the sign-in experience further.</td></tr><tr><td>3</td><td><strong>Use FirebaseUI to perform the sign-in flow</strong></td><td>Import the FirebaseUI library, specify the sign-in methods you want to support, and initiate the FirebaseUI sign-in flow.</td></tr></tbody></table>
>
>
<table><tbody><tr><th colspan="3">Using the Firebase Authentication SDK</th></tr><tr><td>1</td><td><strong>Set up sign-in methods</strong></td><td>For email address and password sign-in and any federated identity providers you want to support, enable them in the Firebase console and complete any configuration required by the identity provider, such as setting your OAuth redirect URL.</td></tr><tr><td>2</td><td><strong>Implement UI flows for your sign-in methods</strong></td><td>For email address and password sign-in, implement a flow that prompts users to type their email addresses and passwords. For federated sign-in, implement the flow required by each provider.</td></tr><tr><td>3</td><td><strong>Pass the user's credentials to the Firebase Authentication SDK</strong></td><td>Pass the user's email address and password or the OAuth token that was acquired from the federated identity provider to the Firebase Authentication SDK.</td></tr></tbody></table>


<table><tbody><tr><th colspan="3">Using FirebaseUI Auth (beta)</th></tr><tr><td>1</td><td><strong>サインイン・メソッドをセットアップ</strong></td><td>あなたがサポートしたいと考えるメールアドレスとパスワードによるサインインと任意のアイデンティティ・プロバイダ向けに、Firebaseコンソールでそれらを有効にし、アイデンティティ・プロバイダに必要とされるOAuthリダイレクトURLなどの設定を完了させます。</td></tr><tr><td>2</td><td><strong>サインインUIをカスタマイズ</strong></td><td>あなたはFirebaseUIのオプションを設定することでサインインUIをカスタマイズできます。　または、サインイン・エクスペリエンスをカスタマイズするためGitHubでコードのフォークも出来ます。</td></tr><tr><td>3</td><td><strong>サインイン・フローを実行するためFirebaseUIを使用</strong></td><td>FirebaseUIライブラリをインポートし、サポートしたいサインイン方法を指定し、FirebaseUIのサインイン・フローを 開始します。</td></tr></tbody></table>




<table><tbody><tr><th colspan="3">Using the Firebase Authentication SDK</th></tr><tr><td>1</td><td><strong>サインイン・メソッドをセットアップ</strong></td><td>あなたがサポートしたいと考えるメールアドレスとパスワードによるサインインと任意のアイデンティティ・プロバイダ向けに、Firebaseコンソールでそれらを有効にし、アイデンティティ・プロバイダに必要とされるOAuthリダイレクトURLなどの設定を完了させます。</td></tr><tr><td>2</td><td><strong>あなたのサインイン・メソッド向けのUIフローを実装</strong></td><td>メールアドレスとパスワードのサインインのために、ユーザーにメールアドレスとパスワードの入力を促すフローを実装します。　連携サインインのために、各プロバイダで必要とされるフローを実装します。</td></tr><tr><td>3</td><td><strong>ユーザーの証明をFirebase Authentication SDKに渡す</strong></td><td>ユーザーのメールアドレスとパスワード、または連携アイデンティティ・プロバイダから得たOAuthトークンをFirebase Authentication SDKに渡します。</td></tr></tbody></table>

## Next steps
>Learn more about users in a Firebase project, then see the integration guides for the sign-in providers you want to support:
>
<a href="https://firebase.google.com/docs/auth/ios/manage-users" >iOS</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/android/manage-users" >Android</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/web/manage-users" >Web</a>
>
<strong>Note:</strong>Our SDKs have changed. If you are upgrading from a 2.X version of the Firebase SDK, please read our upgrade guides for <a href="https://firebase.google.com/support/guides/firebase-ios">iOS</a>,
<a href="https://firebase.google.com/support/guides/firebase-android">Android</a>, and <a href="https://firebase.google.com/support/guides/firebase-web">Web</a>.

Firebase project内のユーザーについてより詳しくは、あなたがサポートしたいサインイン・プロバイダの統合ガイドを参照してください：
<a href="https://firebase.google.com/docs/auth/ios/manage-users" >iOS</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/android/manage-users" >Android</a>&nbsp;&nbsp;<a href="https://firebase.google.com/docs/auth/web/manage-users" >Web</a>

<strong>注：</strong>SDKに変更がありました。　もしFirebase SDKのバージョン2.Xからアップグレードするなら、<a href="https://firebase.google.com/support/guides/firebase-ios">iOS</a>,<a href="https://firebase.google.com/support/guides/firebase-android">Android</a>, and <a href="https://firebase.google.com/support/guides/firebase-web">Web</a>向けのアップグレードガイドを参照してください。