本日はMetaQuest3の小ネタ枠です。
MetaQuest3でOpenIDConnectの認可コードフローを行う方法を記事にします。
前提条件
本記事のサンプルでの認証先として以下の記事で作成した環境を利用します。
事前に利用するアプリのアプリケーションIDとディレクトリIDをメモしておきます。
bluebirdofoz.hatenablog.com
アプリにスキームURIの設定を行う
リダイレクトURIをアプリで受け取るため、Quest3アプリにスキームURIの設定を行います。
プロジェクトのアセットフォルダにあるAndroidManifest.xmlを開きます。
Assets/Plugins/Android/AndroidManifest.xml
AndroidManifest.xmlに以下のようにインテントフィルターを追加しました。
今回の設定では holomontestapp のURIでアプリが起動するようになります。
<?xml version="1.0" encoding="utf-8" standalone="no"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:installLocation="auto"> <application android:label="@string/app_name" android:icon="@mipmap/app_icon" android:allowBackup="false"> <activity android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" android:configChanges="locale|fontScale|keyboard|keyboardHidden|mcc|mnc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|touchscreen|uiMode" android:launchMode="singleTask" android:name="com.unity3d.player.UnityPlayerActivity" android:excludeFromRecents="true" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> <category android:name="com.oculus.intent.category.VR" /> </intent-filter> <!-- カスタムURLスキーム設定 --> <intent-filter> <action android:name="android.intent.action.VIEW"/> <!-- BROWSABLEを指定するとブラウザから起動できる --> <category android:name="android.intent.category.BROWSABLE"/> <category android:name="android.intent.category.DEFAULT"/> <data android:scheme="holomontestapp"/> </intent-filter> <meta-data android:name="com.oculus.vr.focusaware" android:value="true" /> </activity> <meta-data android:name="unityplayer.SkipPermissionsDialog" android:value="false" /> <meta-data android:name="com.samsung.android.vr.application.mode" android:value="vr_only" /> <meta-data android:name="com.oculus.ossplash.background" android:value="black" /> <meta-data android:name="com.oculus.supportedDevices" android:value="quest|quest2|questpro" /> </application> <uses-feature android:name="android.hardware.vr.headtracking" android:version="1" android:required="true" /> </manifest>
次にボタン押下で認可エンドポイントにアクセスして認証を開始する以下のスクリプトを作成しました。
指定のリダイレクトURIを受け取り、認証に成功していればIDトークンを取得して結果を表示します。
・OpenIDConnectTest.cs
サンプルシーンにスクリプトを配置し、ButtonとTextコンポーネントの参照を設定しました。
ClientIDとTenantIDのフィールドにそれぞれ前述でメモしたアプリケーションIDとディレクトリIDを入力しておきます。
ビルドと動作確認
以下の記事を参考にプロジェクトのビルドとQuest3へのデプロイを実行してください。
bluebirdofoz.hatenablog.com
MetaQuest3でデプロイしたアプリを起動し、ボタンを押下します。
認証画面がブラウザで開くのでユーザIDとパスワードを入力してアプリへのサインインを許可します。
認証が成功するとテキスト欄に取得したIDトークンが表示されます。