Yahoo! ID連携 v2 Android SDK
stable版の提供は終了しました。
本ページはYahoo! ID連携 Android SDKの最新版(Kotlin版)です。 最新のYahoo! ID連携 Android SDKを利用する際は、本ページを参照してください。
Authorization Codeフロー
Authorization Codeフローによるログイン機能の実装方法を説明します。
-
以下の環境で動作確認しています。
- Android API Level 24以上
- Kotlin 1.9.10
- JDK 17
- SDK&サンプルコード
- APIリファレンス
導入方法
JitPackを利用して導入することができます。
設定値については、こちらを参照ください。
初期設定
build.gradle
build.gradleのandroid > defaultConfigに、下記のように「manifestPlaceholders」を追加し、「scheme」を設定することが必要です。
「scheme」には、Client ID登録時に発行されるカスタムURIスキーム「yj-xxxxx」を指定します。
カスタムURIスキームはアプリケーションの管理から変更可能です。
android {
defaultConfig {
(省略)
manifestPlaceholders = [scheme: "yj-xxxxx"]
}
}
リダイレクトURI
設定するリダイレクトURIを決め、準備する必要があります。
次の2種類の形式のうちどちらかで設定してください。
「android-app:」スキーム形式(推奨)
android-app://{package_id}/{scheme}//
- こちらの形式はAPIレベル22以上で動作します。アプリがAPIレベル21以上をサポートする場合は、下記の「カスタムURIスキーム形式」で設定してください。
- URI_ANDROID_APP_SCHEMEで指定します。
- アプリケーションの管理の「コールバックURL」に、決定したリダイレクトURIを登録してください。
- "{scheme}"は、必須となります。
- "{scheme}"は、Client ID登録時に発行されるカスタムURIスキーム「yj-xxxxx」と同じ値にしてください。
カスタムURIスキーム形式
カスタムURIスキームに従ってください。
実装方法
LoginManagerのセットアップ
SDKの機能を使うには、必要な情報をLoginManagerオブジェクトにセットする必要があります。
※具体的なコーディングは、サンプルコードを合わせて参照ください。
①引数として事前に発行したClient IDと準備したリダイレクトURIを指定し、LoginManager.setup()を実行します。
他のプロパティー、メソッドを実行する前に、必ずLoginManager.setupメソッドを実行してください。
実行するタイミングとして、アプリ起動時を推奨しています。
val clientId = "dj00zaiZpPXNYeG5tRXJVVlLzPuWNMvbnN1bWVyc2VjcmV0JnXXXXX-"
val redirectUri = "android-app://$packageName/yj-example//"
LoginManager.setup(clientId, redirectUri)
②LoginListenerを実装するクラスを作成し、設定します。
LoginManager.setLoginListener(this)
ここで設定するListenerに、「ログイン成功」「ログイン失敗」を通知します。
// ログイン成功の場合
override fun onLoginSuccess(loginResult: LoginResult) {
}
// ログイン失敗の場合
override fun onLoginFailure(loginError: LoginError) {
}
③必要に応じてパラメータを定義します。
// UserInfo APIから取得する属性情報を指定
val scopes = setOf(Scope.OPENID, Scope.PROFILE)
// セキュリティ対策のためのパラメータを設定
val nonce = <バックエンドサーバーで生成したnonce>
val codeChallenge = <バックエンドサーバーで生成したcode_challenge>
// CodeChallengeMethodを設定
val codeChallengeMethod = CodeChallengeMethod.S256
// 必要に応じ、追加パラメータを設定
val optionalParameters =
OptionalParameters(prompts = setOf(Prompt.CONSENT), bail = true)
nonceおよびcodeChallengeプロパティーは認可リクエスト時のリクエストパラメーターとして利用されます。
詳しくはAuthorizationエンドポイントをご確認ください。
ログインボタンの指定と追加
ログイン実行用のボタンを設定します。
// ログイン実行用のボタンを設定
findViewById<LoginButton>(R.id.login_button_white).also {
it.scopes = scopes
it.nonce = nonce
it.codeChallenge = codeChallenge
it.optionalParameters = optionalParameters
it.listener = this
}
ログインボタンのデザインをアレンジすることもできます。
ボタンタイプをLoginButtonクラスのsetImage()、またはレイアウトファイルで指定してください。
指定できるボタンデザインと設定値は以下となります。
レイアウトファイルの設定例
<jp.co.yahoo.yconnect.yjloginsdk.widget.LoginButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:button_type="button_white" />
button_typeには下記を設定することができます。
Yahoo! JAPAN IDログインボタン デザインガイドラインに沿って利用してください。
button_type |
画像 |
---|---|
button_white |
|
button_red |
|
icon_white |
|
icon_red |
|
直接ログインメソッドを実行する
ログインボタンを使用しない、もしくは任意のタイミングでログイン処理を行いたい場合は、LoginManager.loginメソッドを呼び出します。
LoginManager.login(
this,
scopes,
nonce,
codeChallenge,
codeChallengeMethod,
optionalParameters
)
認可コードの取得
認可レスポンスを正常に取得した後、LoginResultオブジェクトから認可コードを取得できます。
認可コードをバックエンドサーバーに連携し、バックエンドサーバーはTokenエンドポイントにリクエストしてAccess Token/Refresh Token/ID Tokenを取得します。
override fun onLoginSuccess(loginResult: LoginResult) {
// 認可コードの取得
val code = loginResult.authorizationCode
}
Yahoo! ID連携 v2
- Yahoo! ID連携とは
- ガイドラインを確認する
- Yahoo! JAPAN IDを取得する
- Client IDを登録する
- 各種フロー
-
ネイティブアプリを開発
- iOSアプリ
- Androidアプリ
- 属性取得API(UserInfoAPI)
- ID Token
- JavaScript SDK
- PHP SDK
- Java SDK
- デザインガイドライン
- APIアクセス実装方法
- Yahoo! ID連携用語集
- FAQ