.NET AndroidまたはiOSアプリケーションにログインを追加する

Auth0を使用すると、アプリケーションに手軽に認証を追加することができます。このガイドは、.NET AndroidまたはiOSアプリケーションにAndroidiOS用のAuth0 SDKを使ってAuth0を統合し、認証の追加とユーザープロファイル情報の表示を行う方法について説明します。

このクイックスタートを使用するには、以下の手順に従います:

  • Auth0の無料アカウントにサインアップするか、Auth0にログインします。

  • 統合したいAndroidまたはiOSのプロジェクトで、.NET 6以降を使用したものを用意します。または、ログインした後に、サンプルアプリケーションを表示してダウンロードすることもできます。

1

Auth0を構成する

Auth0のサービスを利用するには、Auth0 Dashboadに設定済みのアプリケーションがある必要があります。Auth0アプリケーションは、プロジェクトに対してどのように認証が動作して欲しいかを構成する場所です。

アプリケーションを構成する

対話型のセレクターを使って「ネイティブアプリケーション」を新規作成するか、統合したいプロジェクトを表す既存のアプリケーションを選択します。Auth0のすべてのアプリケーションには英数字からなる一意のクライアントIDが割り当てられており、アプリケーションのコードがSDKを通じてAuth0 APIを呼び出す際に使用されます。

このクイックスタートを使って構成されたすべての設定は、Dashboardのアプリケーションを自動更新します。今後、アプリケーションの管理もDashboardで行えます。

完了済みの構成を見てみたい場合は、サンプルアプリケーションをご覧ください。

Callback URLを構成する

Callback URLとは、Auth0がユーザーを認証後にリダイレクトするアプリケーション内URLです。設定されていない場合、ユーザーはログイン後にアプリケーションに戻りません。

ログアウトURLを構成する

ログアウトURLとは、Auth0がユーザーをログアウト後にリダイレクトするアプリケーション内URLです。設定されていない場合、ユーザーはアプリケーションからログアウトできず、エラーを受け取ります。

最後に、アプリケーションの[Application Type(アプリケーションタイプ)][Native(ネイティブ)]になっていることをアプリケーションの設定で必ず確認してください。

2

Auth0 SDKをインストールする

.NET AndroidとiOSアプリケーションで、Auth0認証が手軽に実装できるように、Auth0はAndroidiOSのSDKを提供しています。

NuGetパッケージマネージャ([Tools(ツール)] -> [Library Package Manager(ライブラリーパッケージマネージャー)] -> [Package Manager Console(パッケージマネージャーコンソール)])を使用して、AndroidまたはiOSアプリケーションのどちらをビルドするかに応じて、Auth0.OidcClient.AndroidXまたはAuth0.OidcClient.iOSパッケージをインストールします。

NuGetパッケージマネージャーコンソール(Install-Package)やdotnet CLI(dotnet add)を代わりに使用することもできます。

Install-Package Auth0.OidcClient.AndroidX
Install-Package Auth0.OidcClient.iOS

Was this helpful?

/

dotnet add Auth0.OidcClient.AndroidX
dotnet add Auth0.OidcClient.iOS

Was this helpful?

/

3

Auth0Clientをインスタンス化する

Auth0をアプリケーションに統合するには、Auth0のドメインとクライアントIDを含むAuth0ClientOptionsのインスタンスを渡して、Auth0Clientクラスをインスタンス化します。

using Auth0.OidcClient;
var client = new Auth0Client(new Auth0ClientOptions {
Domain = "{yourDomain}",
ClientId = "{yourClientId}"
}, this);

Was this helpful?

/

SDKは初期設定で、AndroidにはChrome Custom Tabs、iOSにはASWebAuthenticationSessionを利用します。

checkpoint.header

Auth0Clientが適切にインスタンス化されました。アプリケーションを実行して次の点を確認します:

  • Auth0ClientのインスタンスがActivity(Android)またはUIViewController(iOS)で正しく作成されている。

  • アプリケーションがAuth0に関連したエラーを投入していない。

4

Androidを構成する

ユーザーが認証に成功すると、このクイックスタートで前にセットアップしたCallback URLへリダイレクトされます。

Androidデバイスでコールバックを扱うには、Callback URLを扱うインテントを登録する必要があります。これを手軽に実現するには、認証フローをインスタンス化するためにLoginAsyncメソッドを呼び出したのと同じアクティビティーにインテントを登録します。

必ず、サンプルコードにあるYOUR_ANDROID_PACKAGE_NAMEは実際のアプリケーションのパッケージ名(com.mycompany.myapplicationなど)で置き換えてください。また、DataSchemeDataHostDataPathPrefixのテキストがすべて小文字であることを確認してください。アクティビティーにはLaunchMode = LaunchMode.SingleTaskを設定します。設定しないと、Callback URLが呼び出されるたびに、システムがアクティビティーの新しいインスタンスを作成します。

また、ActivityクラスにあるOnNewIntentイベントでインテントを扱う必要があります。ActivityMediatorシングルトンのSendメソッドを呼び出して受け取ったURLを渡し、Auth0のOIDCクライアントに認証フローを終わらせるよう通知する必要があります。

protected override void OnNewIntent(Intent intent)
{

    base.OnNewIntent(intent);

    ActivityMediator.Instance.Send(intent.DataString);

}

Was this helpful?

/

5

iOSを構成する

ユーザーが認証に成功すると、このクイックスタートで前にセットアップしたCallback URLへリダイレクトされます。

iOSデバイスでコールバックを扱うには、以下を行います:

  1. アプリケーションのInfo.plistファイルをVisual Studioで開いて、[Advanced(詳細)]タブに移動します。

  2. [URL Types(URLタイプ)]にある[Add URL Type(URLタイプの追加)]ボタンをクリックします。

  3. 識別子をAuth0、URLスキーマをアプリケーションのバンドル識別子ロール[None(なし)]に設定します。

これは、URLタイプを追加した後でXML表記されたinfo.plistファイルの例です:

<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>None</string>
<key>CFBundleURLName</key>
<string>Auth0</string>
<key>CFBundleURLSchemes</key>
<array>
<string>YOUR_BUNDLE_IDENTIFIER</string>
</array>
</dict>
</array>

Was this helpful?

/

さらに、AppDelegateクラスにあるOpenUrlイベントでCallback URLを扱う必要があります。ActivityMediatorシングルトンのSendメソッドを呼び出して受け取ったURLを渡し、Auth0のOIDCクライアントに認証フローを終わらせるよう通知する必要があります。

6

アプリケーションにログインを追加する

Auth0アプリケーションとAuth0 SDKの構成が完了したら、プロジェクトのためにログインをセットアップする必要があります。これを実現するには、SDKのLoginAsync()メソッドを使用して、ユーザーをAuth0のユニバーサルログインページにリダイレクトするログインボタンを作成します。

var loginResult = await client.LoginAsync();

Was this helpful?

/

エラーがなければ、LoginAsync()が返すLoginResultUserIdentityTokenAccessTokenRefreshTokenにアクセスすることができます。

checkpoint.header

ユーザー名とパスワードを使ってログインやサインアップができるようになりました。

ログインボタンをクリックして次の点を確認します:

  • AndroidまたはiOSアプリケーションによってAuth0のユニバーサルログインページにリダイレクトされる。

  • ログインまたはサインアップできる。

  • Auth0によってアプリケーションにリダイレクトされる。

7

アプリケーションにログアウトを追加する

プロジェクトにログインしたユーザーには、ログアウトする方法も必要です。SDKのLogoutAsync()メソッドを使用してログアウトボタンを作成します。ユーザーはログアウトすると、Auth0ログアウトエンドポイントにリダイレクトされてから、即座に、このクイックスタートで先ほどセットアップしたログアウトURLにリダイレクトで戻されます。

await client.LogoutAsync();

Was this helpful?

/

checkpoint.header

アプリケーションを実行して、ログアウトボタンをクリックします。以下の点を確認します:

  • AndroidまたはiOSアプリケーションによって、アプリケーションの設定で[Allowed Logout URLs(許可されているログアウトURL)]の1つに指定されているアドレスへリダイレクトされる。

  • アプリケーションにログインしていない。

8

ユーザープロファイル情報を表示する

ユーザーがログインやログアウトできるようになったら、認証済のユーザーに関連付けられたプロファイル情報を取得できるようにしたいと考えるはずです。たとえば、ログインしたユーザーの名前やプロフィール写真をプロジェクトに表示したいかもしれません。

AndroidまたはiOS用のAuth0 SDKでは、LoginResult.Userプロパティを通じてユーザー情報を提供します。

if loginResult.IsError == false {
var user = loginResult.User
var name = user.FindFirst(c => c.Type == "name")?.Value
var email = user.FindFirst(c => c.Type == "email")?.Value
var picture = user.FindFirst(c => c.Type == "picture")?.Value
}

Was this helpful?

/

Next Steps

Excellent work! If you made it this far, you should now have login, logout, and user profile information running in your application.

This concludes our quickstart tutorial, but there is so much more to explore. To learn more about what you can do with Auth0, check out:

Did it work?

Any suggestion or typo?

Edit on GitHub
Sign Up

Sign up for an or to your existing account to integrate directly with your own tenant.