Logto は、モダンなアプリや SaaS 製品向けに設計された Auth0 の代替です。 Cloud と オープンソース の両方のサービスを提供し、アイデンティティと管理 (IAM) システムを迅速に立ち上げるのに役立ちます。認証 (Authentication)、認可 (Authorization)、マルチテナント管理を すべて一つに まとめて楽しんでください。
Logto Cloud で無料の開発テナントから始めることをお勧めします。これにより、すべての機能を簡単に探索できます。
この記事では、Android (Kotlin / Java) と Logto を使用して、Tencent サインイン体験(ユーザー認証 (Authentication))を迅速に構築する手順を説明します。
前提条件
- 稼働中の Logto インスタンス。紹介ページ をチェックして始めてください。
- Android (Kotlin / Java) の基本的な知識。
- 使用可能な Tencent アカウント。
Logto にアプリケーションを作成する
Logto は OpenID Connect (OIDC) 認証 (Authentication) と OAuth 2.0 認可 (Authorization) に基づいています。これは、複数のアプリケーション間でのフェデレーテッドアイデンティティ管理をサポートし、一般的にシングルサインオン (SSO) と呼ばれます。
あなたの ネイティブアプリ アプリケーションを作成するには、次の手順に従ってください:
- Logto コンソール を開きます。「Get started」セクションで、「View all」リンクをクリックしてアプリケーションフレームワークのリストを開きます。あるいは、Logto Console > Applications に移動し、「Create application」ボタンをクリックします。
- 開いたモーダルで、左側のクイックフィルターチェックボックスを使用して、利用可能なすべての "ネイティブアプリ" フレームワークをフィルタリングするか、"ネイティブアプリ" セクションをクリックします。"Android" フレームワークカードをクリックして、アプリケーションの作成を開始します。
- アプリケーション名を入力します。例:「Bookstore」と入力し、「Create application」をクリックします。
🎉 タダーン!Logto で最初のアプリケーションを作成しました。詳細な統合ガイドを含むお祝いページが表示されます。ガイドに従って、アプリケーションでの体験を確認してください。
Logto SDK を統合する
- この例は View システム と View Model に基づいていますが、Jetpack Compose を使用する場合でも概念は同じです。
- この例は Kotlin で書かれていますが、Java でも概念は同じです。
- Kotlin と Java のサンプルプロジェクトは、私たちの SDK リポジトリ で利用可能です。
- チュートリアルビデオは、私たちの YouTube チャンネル で視聴できます。
インストール
Logto Android SDK のサポートされている最小 Android API レベルはレベル 24 です。
Logto Android SDK をインストールする前に、Gradle プロジェクトのビルドファイルで mavenCentral()
がリポジトリ設定に追加されていることを確認してください:
dependencyResolutionManagement {
repositories {
mavenCentral()
}
}
Logto Android SDK を依存関係に追加します:
- Kotlin
- Groovy
dependencies {
implementation("io.logto.sdk:android:1.1.3")
}
dependencies {
implementation 'io.logto.sdk:android:1.1.3'
}
SDK はインターネットアクセスが必要なため、次の権限を AndroidManifest.xml
ファイルに追加する必要があります:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<!-- インターネット権限を追加 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- その他の設定... -->
</manifest>
LogtoClient の初期化
LogtoViewModel.kt
を作成し、このビューモデルで LogtoClient
を初期化します:
//...他のインポート
import io.logto.sdk.android.LogtoClient
import io.logto.sdk.android.type.LogtoConfig
class LogtoViewModel(application: Application) : AndroidViewModel(application) {
private val logtoConfig = LogtoConfig(
endpoint = "<your-logto-endpoint>",
appId = "<your-app-id>",
scopes = null,
resources = null,
usingPersistStorage = true,
)
private val logtoClient = LogtoClient(logtoConfig, application)
companion object {
val Factory: ViewModelProvider.Factory = object : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(
modelClass: Class<T>,
extras: CreationExtras
): T {
// extras から Application オブジェクトを取得
val application = checkNotNull(extras[APPLICATION_KEY])
return LogtoViewModel(application) as T
}
}
}
}
次に、MainActivity.kt
のために LogtoViewModel
を作成します:
//...他のインポート
class MainActivity : AppCompatActivity() {
private val logtoViewModel: LogtoViewModel by viewModels { LogtoViewModel.Factory }
//...他のコード
}
リダイレクト URI の設定
Logto コンソールのアプリケーション詳細ページに切り替えましょう。リダイレクト URI io.logto.android://io.logto.sample/callback
を追加し、「変更を保存」をクリックします。

サインインとサインアウトの実装
logtoClient.signIn
を呼び出す前に、Admin Console でリダイレクト URI
が正しく設定されていることを確認してください。 :::
logtoClient.signIn
を使用してユーザーをサインインし、logtoClient.signOut
を使用してユーザーをサインアウトできます。
例えば、Android アプリでは次のようにします:
//...他のインポートと共に
class LogtoViewModel(application: Application) : AndroidViewModel(application) {
// ...他のコード
// 認証 (Authentication) 状態を監視するライブデータを追加
private val _authenticated = MutableLiveData(logtoClient.isAuthenticated)
val authenticated: LiveData<Boolean>
get() = _authenticated
fun signIn(context: Activity) {
logtoClient.signIn(context, "io.logto.android://io.logto.sample/callback") { logtoException ->
logtoException?.let { println(it) }
// ライブデータを更新
_authenticated.postValue(logtoClient.isAuthenticated)
}
}
fun signOut() {
logtoClient.signOut { logtoException ->
logtoException?.let { println(it) }
// ライブデータを更新
_authenticated.postValue(logtoClient.isAuthenticated)
}
}
}
次に、アクティビティ内で signIn
と signOut
メソッドを呼び出します:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
//...他のコード
// レイアウトに id "sign_in_button" を持つボタンがあると仮定
val signInButton = findViewById<Button>(R.id.sign_in_button)
signInButton.setOnClickListener {
logtoViewModel.signIn(this)
}
// レイアウトに id "sign_out_button" を持つボタンがあると仮定
val signOutButton = findViewById<Button>(R.id.sign_out_button)
signOutButton.setOnClickListener {
if (logtoViewModel.authenticated) { // ユーザーが認証 (Authentication) されているか確認
logtoViewModel.signOut()
}
}
// 認証 (Authentication) 状態を監視して UI を更新
logtoViewModel.authenticated.observe(this) { authenticated ->
if (authenticated) {
// ユーザーは認証 (Authentication) されています
signInButton.visibility = View.GONE
signOutButton.visibility = View.VISIBLE
} else {
// ユーザーは認証 (Authentication) されていません
signInButton.visibility = View.VISIBLE
signOutButton.visibility = View.GONE
}
}
}
}
チェックポイント: アプリケーションをテストする
これで、アプリケーションをテストできます:
- アプリケーションを実行すると、サインインボタンが表示されます。
- サインインボタンをクリックすると、SDK がサインインプロセスを初期化し、Logto のサインインページにリダイレクトされます。
- サインインすると、アプリケーションに戻り、サインアウトボタンが表示されます。
- サインアウトボタンをクリックして、トークンストレージをクリアし、サインアウトします。
Tencent コネクターを追加する
SMS コネクターは、認証 (Authentication) のためにワンタイムパスワード (OTP) を送信するための方法です。これは、SMS ベースの登録、サインイン、二要素認証 (2FA)、アカウント回復を含むパスワードレス認証 (Authentication) をサポートするために 電話番号 の確認を可能にします。 Logto の SMS コネクターを使用すると、数分でこれを設定できます。
SMS コネクターを追加するには、次の手順に従ってください:
- Console > Connector > Email and SMS connectors に移動します。
- 新しい SMS コネクターを追加するには、「Set up」ボタンをクリックし、「Tencent」を選択します。
- 選択したプロバイダーの README ドキュメントを確認します。
- 「Parameter Configuration」セクションで設定フィールドを完了します。
- JSON エディターを使用して SMS テンプレートをカスタマイズします。
- 電話番号 に確認コードを送信して設定をテストします。

インプレースコネクターガイドに従っている場合は、次のセクションをスキップできます。
Tencent SMS コネクター を設定する
Tencent Cloud アカウントの作成
Tencent Cloud のウェブサイト にアクセスし、アカウントをお持ちでない場合は登録してください。
Tencent Cloud SMS の有効化と設定
- Tencent Cloud のウェブサイト でアカウントにサインインし、SMS サービスコンソールページ に移動します。
- SMS サービスページで「無料試用」(免费试用) ボタンをクリックし、セットアップ手順に従います。
- 「SMS サービス開通規約」(短信开通服务条款) に同意し、「サービスを有効化」(开通服务) をクリックして進めます。
- 「SMS コンソール概要」(短信服务控制台概览) で、サイドバーからニーズに応じて「国内メッセージ」(国内消息) または「国際/香港・マカオ・台湾メッセージ」(国际/港澳台消息) を選択します。
- SMS メッセージ用のシグネチャとテンプレートを追加します。注意点:
- 「シグネチャ」(签名) を追加する際は、「適用シナリオ」(模版类型) フィールドで「認証コード」(验证码) を選択してください。
- テンプレートを追加する際は、テンプレートタイプとして「認証コード」を選択してください。
- テンプレート内容にはプレースホルダー
{1}
を含めてください。これはランダムに生成されたコードに置き換えられます。 - 複数のプレースホルダーを含むテンプレートはサポートされていません。単一プレースホルダーのテンプレートを使用または作成してください。
- シグネチャとテンプレートを審査に提出します。提出後:
- 有効になるまでお待ちください。
- 「SMS コンソール概要」(短信服务控制台概览) からテスト SMS を送信できます。承認済みのシグネチャとテンプレートはテストに直接使用できます。審査中の場合は提供されているテスト用テンプレートを使用してください。
- テスト用にアカウント残高が十分であること、およびテスト用電話番号を事前登録して SMS を正常に受信できるようにしてください。
詳細なガイダンスは、SMS コンソール概要の「新手配置指引」(Getting Started Guide) タブをクリックしてください。
コネクター JSON の作成
- 「SMS コンソール概要」にアクセスし、右上のアバターにカーソルを合わせます。「アクセス管理 > アクセスキー > API キー」へ進み、セキュリティ認証を完了後に
AccessKey ID
とAccessKey Secret
を生成します。大切に保管してください。 - 「国内メッセージ」(国内消息) または「国際/香港・マカオ・台湾メッセージ」(国际/港澳台消息) タブから「シグネチャ名」(签名名称) と「テンプレートコード」(模版 CODCE) を取得します。
- テスト用テンプレートの場合は、「テスト専用テンプレート」(测试专用签名模版) の下の「快速开始」(Getting Started) タブを確認してください。
- Tencent Cloud SMS コネクターを次のフィールドで設定します:
accessKeyId
およびaccessKeySecret
:ステップ 1 で取得した認証情報を使用します。signName
:ステップ 2 で取得したシグネチャ名。すべてのテンプレートに適用されます。- 必要に応じて、異なるシナリオ用に複数のテンプレートを追加できます。単一テンプレートの例:
templateCode
:ステップ 2 で取得したテンプレートコード。usageType
:シナリオに応じてRegister
、SignIn
、ForgotPassword
、Generic
のいずれかを指定します(Logto 固有のプロパティ)。- すべてのシナリオ(4 種類)に対してテンプレートが設定されていることを確認してください。
sdkAppId
:「アプリケーション管理」(应用管理) で確認できます。region
:「送信ドキュメント」(发送文档) からサポートされているリージョンを指定してください。
Tencent Cloud SMS コネクターのテスト
電話番号を入力し、「送信」をクリックすることで、「保存して完了」前に設定が機能するかどうかを確認できます。
以上です。サインイン体験でコネクターを有効化 するのをお忘れなく。
設定タイプ
名前 | 型 |
---|---|
accessKeyId | string |
accessKeySecret | string |
signName | string |
region | string |
sdkAppId | string |
templates | Template[] |
テンプレートプロパティ | 型 | 列挙値 |
---|---|---|
templateCode | string | N/A |
usageType | enum string | 'Register' / 'SignIn' / 'ForgotPassword' / 'Generic' |
設定を保存する
Logto コネクター設定エリアで必要な値をすべて記入したことを確認してください。「保存して完了」または「変更を保存」をクリックすると、Tencent コネクターが利用可能になります。
サインイン体験で Tencent コネクターを有効にする
コネクターを正常に作成したら、電話番号ベースのパスワードレスログインと登録を有効にできます。
- コンソール > サインイン体験 > サインアップとサインイン に移動します。
- サインアップ方法を設定します(オプション):
- サインアップ識別子として "電話番号" または "Email or phone number" を選択します。
- "Verify at sign-up" は強制的に有効化されます。登録時に "Create a password" を有効にすることもできます。
- サインイン方法を設定します:
- サインイン識別子の一つとして 電話番号 を選択します。複数の利用可能な識別子(メール、電話番号、ユーザー名)を提供できます。
- 認証 (Authentication) 要素として "Verification code" および / または "Password" を選択します。
- "Save changes" をクリックし、"Live preview" でテストします。

OTP を使用した登録とログインに加えて、パスワードの回復や ベースのセキュリティ検証を有効にし、電話番号 をプロファイルにリンクすることもできます。詳細については、エンドユーザーフロー を参照してください。
テストと検証
Android (Kotlin / Java) アプリに戻ります。これで Tencent を使用してサインインできるはずです。お楽しみください!
さらなる読み物
エンドユーザーフロー:Logto は、MFA やエンタープライズシングルサインオン (SSO) を含む即時使用可能な認証 (Authentication) フローを提供し、アカウント設定、セキュリティ検証、マルチテナント体験の柔軟な実装のための強力な API を備えています。
認可 (Authorization):認可 (Authorization) は、ユーザーが認証 (Authentication) された後に行えるアクションやアクセスできるリソースを定義します。ネイティブおよびシングルページアプリケーションの API を保護し、ロールベースのアクセス制御 (RBAC) を実装する方法を探ります。
組織 (Organizations):特にマルチテナント SaaS や B2B アプリで効果的な組織機能は、テナントの作成、メンバー管理、組織レベルの RBAC、およびジャストインタイムプロビジョニングを可能にします。
顧客 IAM シリーズ:顧客(または消費者)アイデンティティとアクセス管理に関する連続ブログ投稿で、101 から高度なトピックまでを網羅しています。