Liferay Screens for AndroidでOAuth 2を使用する
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、こちらまでご連絡ください。
OAuth 2 を使用して、次の OAuth 2付与タイプログインスクリーンレット を使用して認証できます
-
認証コード(ネイティブアプリの場合はPKCE): ユーザーを資格情報を入力するモバイルブラウザーのページにリダイレクトします。 ログイン後、ブラウザはユーザーをモバイルアプリにリダイレクトします。ユーザーの資格情報はアクセスできないため、アプリを介して侵害されることはありません。取り消し可能なトークンを使用します。 これは、ユーザーがアプリに資格情報を入力したくない場合にも役立ちます。たとえば、ユーザーはサードパーティのTwitterアプリにTwitterの資格情報を直接入力したくない場合があり、代わりにTwitterの公式サイトを介して認証することを好みます。 認証のためにリダイレクトするサイトにはOAuth 2が実装されている必要があることに注意してください。
-
リソース所有者パスワード: ユーザーは、アプリに直接資格情報を入力して認証します。
-
クライアント資格情報: ユーザーの操作を必要とせずに認証します。 これは、アプリが特定のユーザーのリソースではなく、独自のリソースにアクセスする必要がある場合に役立ちます。
このチュートリアルでは、これらの付与タイプをログインスクリーンレットで使用する方法を示します。 開始する前に、ポータルでOAuth 2.0アプリケーションを登録する手順について、 Liferay DXPのOAuth 2.0ドキュメント を参照してください。
認証コード(PKCE)
ログインスクリーンレットで認証コード付与タイプを使用するには、次の手順に従います。
-
ユーザーが認証された後にモバイルブラウザーがリダイレクトするURLを構成します。 これを行うには、 Mobile SDKの認証コードの手順の最初の2つの手順に従います。 ポータルとAndroidアプリの両方でこのURLを構成する必要があることに注意してください。
-
ログインスクリーンレットの
loginMode
属性をoauth2Redirect
ます。 これを行うには2つの方法があります。- コードでは、Login Screenletインスタンスの `authenticationType` 変数として。 この変数は、Login Screenletの `setAuthenticationType` メソッドを使用して、 `AuthenticationType` enum定数 `OAUTH2REDIRECT`を使用して設定する必要があります。 ``` loginScreenlet.setAuthenticationType(AuthenticationType.OAUTH2REDIRECT); ```
- Login ScreenletのXMLを挿入するとき、
loginMode
属性をoauth2Redirect
ます。
- Login ScreenletのXMLを挿入するとき、
-
ログインスクリーンレットのXMLで、ログインスクリーンレットの
oauth2ClientId
属性を、使用するポータルのOAuth 2アプリケーションのIDに設定します。 この値を見つけるには、ポータルのOAuth 2管理ポートレットでそのアプリケーションに移動します。 -
ログインスクリーンレットのXMLで、ログインスクリーンレットの
oauth2Redirect
属性を手順1で構成したURLに設定します。
上記の手順の属性を使用したログインスクリーンレットのXMLの例を次に示します。
<com.liferay.mobile.screens.auth.login.LoginScreenlet android:id=“@+id/login_screenlet” android:layout_width=“match_parent” android:layout_height=“match_parent” app:loginMode=“oauth2Redirect” app:oauth2Redirect=“my-app://my-app” app:oauth2ClientId=“54321” app:credentialsStorage=“shared_preferences” />
- Login Screenletを使用するアクティビティでは、
onActivityResult
メソッドをオーバーライドして、最初のステップで設定したリダイレクトを実装する必要があります。 これを行うには、Login ScreenletのresumeOAuth2RedirectFlow
メソッドを呼び出します。
@Override protected void onActivityResult(int requestCode、int resultCode、Intent intent){ super.onActivityResult(requestCode、resultCode、intent);
if (requestCode == OAuth2SignIn.REDIRECT_REQUEST_CODE) {
loginScreenlet.resumeOAuth2RedirectFlow(intent);
}
}
リソース所有者のパスワード
ログインスクリーンレットでリソース所有者パスワード付与タイプを使用するには、次の手順に従います。
-
ログインスクリーンレットの
loginMode
属性をoauth2UsernameAndPassword
ます。 これを行うには2つの方法があります。- コードでは、Login Screenletインスタンスの `authenticationType` 変数として。 この変数は、Login Screenletの `setAuthenticationType` メソッドを使用して、 `AuthenticationType` 列挙定数 `OAUTH2USERNAMEANDPASSWORD`を使用して設定する必要があります。 loginScreenlet.setAuthenticationType(AuthenticationType.OAUTH2USERNAMEANDPASSWORD);
- Login ScreenletのXMLを挿入するとき、
loginMode
属性をoauth2UsernameAndPassword
ます。
- Login ScreenletのXMLを挿入するとき、
-
ログインスクリーンレットのXMLで、ログインスクリーンレットの
oauth2ClientId
属性を、使用するOAuth 2アプリケーションのIDに設定します。 この値を見つけるには、OAuth 2管理ポートレットでそのアプリケーションに移動します。 -
ログインスクリーンレットのXMLで、ログインスクリーンレットの
oauth2ClientSecret
属性を同じOAuth 2アプリケーションのクライアントシークレットに設定します。
上記の手順の属性を使用したログインスクリーンレットのXMLの例を次に示します。
<com.liferay.mobile.screens.auth.login.LoginScreenlet android:id=“@+id/login_screenlet” android:layout_width=“match_parent” android:layout_height=“match_parent” app:loginMode=“oauth2UsernameAndPassword” app:oauth2ClientId=“54321” app:oauth2ClientSecret=“12345” app:basicAuthMethod=“email” app:credentialsStorage=“shared_preferences” />
クライアント資格情報
OAuth 2クライアント資格情報付与タイプは、ユーザーの操作を必要とせずに認証します。 これは、アプリが特定のユーザーのリソースではなく、独自のリソースにアクセスする必要がある場合に役立ちます。
Androidアプリでクライアント資格情報付与タイプを使用するには、次の手順に従います。
-
クライアント資格情報付与タイプを使用するには、 Android Mobile SDKの指示 従ってください。
-
セッションオブジェクトには有効な認証オブジェクトが含まれています。 セッションを引数として
SessionContext
メソッドcreateOAuth2Session
渡します。SessionContext.createOAuth2Session(session);
これにより、Screens SessionContext
オブジェクトが初期化され、Androidアプリで使用するScreenletが認証されます。