Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CredentialManager移行の落とし穴
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
ゆつぼ
October 14, 2024
Technology
1.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CredentialManager移行の落とし穴
ゆつぼ
October 14, 2024
More Decks by ゆつぼ
See All by ゆつぼ
Glance 3分クッキング
morayl
0
140
安全にNavigateしよう
morayl
0
560
DAI語で行こう #as_tips / daigo_as_tips
morayl
1
530
Other Decks in Technology
See All in Technology
Amazon EVS で VCF 9.0 / 9.1 のサポート開始まとめ
mtoyoda
0
180
組織における AI-DLC 実践
askul
0
300
はてなのサービス基盤を支える Kubernetes《足腰》
masayoshimaezawa
0
430
Text-to-SQLをAgentCoreで実現し、生成されるSQLの精度を定量的に評価する
yakumo
2
490
AI駆動開発におけるQAエンジニアの役割事例 〜AI駆動開発の現場から〜
kobayashiyorimitsu
0
290
“全部コピーしない”ファイルデータの活用 : — FSx for ONTAP × S3 Tables × Icebergで作るメタデータカタログ
yoshiki0705
0
370
AWS Summit 2026で見えたSIerにとっての Amazon Quickの位置づけ
maf_0521
0
160
AIDLC_ヤフーショッピングの取り組み
lycorptech_jp
PRO
0
510
#エンジニアBooks 30分でわかる 「技術記事を書く技術」 / engineer-books 2026-06-30
jnchito
1
180
プロンプト_きのこカンファレンス2026_LT
yurufuwahealer
0
130
Hatena Engineer Seminar 37 jj1uzh
jj1uzh
0
420
勉強会企画をアプリで構造化してみた 〜そこで見えた、AIとの付き合い方〜 / I've structured a study group plan using an app.
pauli
0
300
Featured
See All Featured
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
200
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
580
Amusing Abliteration
ianozsvald
1
220
Product Roadmaps are Hard
iamctodd
55
12k
What's in a price? How to price your products and services
michaelherold
247
13k
Google's AI Overviews - The New Search
badams
0
1.1k
Accessibility Awareness
sabderemane
1
150
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
380
Are puppies a ranking factor?
jonoalderson
1
3.7k
A Soul's Torment
seathinner
6
3k
Test your architecture with Archunit
thirion
1
2.3k
Transcript
CredentialManager移行の 落とし穴 ゆつぼ(@morayl1) 1
ゆつぼ 株式会社リクルート スタディサプリのAndroidエンジニア うつぼです。かわいい! 2 morayl morayl1
はじめに • ID/パスワードの入力補助のお話 • Smart Lock for Passwordsからの移行 • 環境依存が強いので、結果が異なる場合があるかも
3
Smart Lock for PasswordsとCredentialManager • Smart Lock for Passwords(CredentialsApi) ◦
ID/Passwordの保存・読み出しを中継するライブラリ ◦ gms:play-services-authに入っていたが、2022年にdeprecatedになった ◦ gms:play-services-auth:21.0.0から削除されている(21.2.0が最新) • それに変わるのがCredentialManager ◦ Passwordだけでなく、GoogleSignIn・Passkeyにも対応できる • ライブラリが変わるので、移行にはコードの書き換えが必要 4
CredentialManagerへの移行 公式にマイグレーションガイドがある https://developer.android.com/identity/sign-in/smart-lock-migration 5
パスワードの保存 6
パスワードの読み出し 7
パスワードの読み出し 8
パスワードの読み出し 9
落とし穴 10
正常パターン 11
12
13
14
15
異常パターン 16
17
18
19
20
21
事象と条件 事象:特定の条件でパスワード保存シートが2回表示される 発生条件:Android14以降で、入力UIにEditTextを使っている 22
23
24
25
分かったこと 勝手に出てくるもの + 自分が出しているもの、で 2つ出ている • EditTextでinputTypeがpassword系の場合に出る(OS14以降) ◦ 画面遷移(Activity/Fragment):保存UI ◦
EditTextへのフォーカス(autofill属性による):読み出しUI • OS14から、Autofillが強化されたことが原因 • Composeでは発生しない ◦ ComposeはまだAutofillに最適化されていないらしい ◦ そのうち最適化されそう • play-services-authでは発生しない 26
解決策 Compose化する パスワード入力ViewでEditTextを使わなければ解決する • EditTextだけComposeにする ◦ Abstract/ComposeViewを使うと出来る ◦ TextInputLayoutで囲んである場合は、難しいかも •
画面全体・Fragmentのレイアウトを全てComposeにする 27
「今、Compose化は出来ん」 28
xmlのまま解決する方法はないか? 1. 解決しない方法 2. ちょっと解決する方法 3. 解決ではない方法 4. 解決策? 5.
解決策 29
解決しない方法 xmlでAutofillの無効化する 30 inputTypeがpasswordだと表示されてしまう。 IssueTrackerで、仕様通りと回答されている。(以下、抜粋・翻訳) Android 14以降では、「自動入力の重要度」の挙動が更新されました。 Views#isImportantForAutofill が no
または noExcludeDescendants に設定されてい るビューでも、フォーカスされた際に通常は自動入力がトリガーされます。
解決ではない方法 play-services-authの21.0.0未満を使い続ける メリット • 問題が発生しない ◦ OS14でも、勝手に表示されない デメリット • deprecatedのままで、ライブラリアップデートも出来ない
31
ちょっと解決する方法 画面遷移前に、 AutofillManagerのcancelを呼ぶ。 メリット • 画面遷移後に出る(保存)のは防げる デメリット • EditTextタップ時に出てくるもの(読み出し)は防げない 32
解決策? OS14以降で、CredentialManagerのメソッドを呼ばない メリット • 問題は解決する デメリット • 読み出し・保存のタイミングが制御できない • 明示しないことには不安がある
◦ 内部仕様が変わると動作しなくなるかも・・・? 33
解決策 EditTextにisCredential=trueを付ける メリット • 問題が解決する デメリット? • 移行ガイドの手順通り進めると出てこない ◦ https://developer.android.com/identity/sign-in/smart-lock-migration
34
isCredentialとは何か Android 14以降では、isCredential属性を使用して、ユーザー名やパスワードなどの資格情報フィー ルドを示すことができます。この属性は、そのビューが Credential Managerやサードパーティの資格 情報プロバイダーと連携するための資格情報フィールドであることを示し、オートフィルサービスがよ り適切なオートフィル候補を提供できるように支援します。 アプリがCredential Manager
APIを使用する場合、利用可能な資格情報を表示する Credential Managerのボトムシートが表示されるため、ユーザー名やパスワード用のオートフィルのダイアログ を表示する必要はありません。同様に、アプリが Credential Manager APIを使用して資格情報を保 存するため、オートフィルのパスワード保存ダイアログも表示する必要がありません。 https://developer.android.com/identity/sign-in/credential-manager#indicate_credential_fields 35
isCredentialとは何か Android 14以降では、isCredential属性を使用して、ユーザー名やパスワードなどの資格情報フィー ルドを示すことができます。この属性は、そのビューがCredential Managerやサードパーティの資格 情報プロバイダーと連携するための資格情報フィールドであることを示し、 オートフィルサービスがよ り適切なオートフィル候補を提供できるように支援します 。 アプリがCredential
Manager APIを使用する場合、利用可能な資格情報を表示する Credential Managerのボトムシートが表示されるため、ユーザー名やパスワード用のオートフィルのダイアログ を表示する必要はありません。同様に、アプリが Credential Manager APIを使用して資格情報を保 存するため、オートフィルのパスワード保存ダイアログも表示する必要がありません。 36 「trueにすると勝手に出る」ようになりそう?
isCredentialとは何か Android 14以降では、isCredential属性を使用して、ユーザー名やパスワードなどの資格情報フィー ルドを示すことができます。この属性は、そのビューがCredential Managerやサードパーティの資格 情報プロバイダーと連携するための資格情報フィールドであることを示し、 オートフィルサービスがよ り適切なオートフィル候補を提供できるように支援します 。 アプリがCredential
Manager APIを使用する場合、利用可能な資格情報を表示する Credential Managerのボトムシートが表示されるため、ユーザー名やパスワード用のオートフィルのダイアログ を表示する必要はありません。同様に、アプリが Credential Manager APIを使用して資格情報を保 存するため、オートフィルのパスワード保存ダイアログも表示する必要がありません。 37 isCredentialを使わないと2回表示される(不適切になる) →trueにすると適切に表示できる
isCredentialとは何か Android 14以降では、isCredential属性を使用して、ユーザー名やパスワードなどの資格情報フィー ルドを示すことができます。この属性は、そのビューが Credential Managerやサードパーティの資格 情報プロバイダーと連携するための資格情報フィールドであることを示し、オートフィルサービスがよ り適切なオートフィル候補を提供できるように支援します。 アプリがCredential Manager
APIを使用する場合、利用可能な資格情報を表示する Credential Managerのボトムシートが表示されるため、ユーザー名やパスワード用のオートフィルのダイアログ を表示する必要はありません。同様に 、アプリがCredential Manager APIを使用して資格情報を保 存するため、オートフィルのパスワード保存ダイアログも表示する必要がありません 。 38 CredentialManager・オートフィルの2種類のダイアログがある → CredentialManagerを使うなら、オートフィルは不要 = trueにするとオートフィルのダイアログが表示されない
isCredentialの属性値を見てみる 「CredentialManagerと紐づいていることを示す」 = 「紐付いているから勝手に出さないでね 」 ComposeもAutofillに最適化された場合、isCredentialのような設定値が増えるのかもし れない 39
まとめ • CredentialManagerでは簡単にパスワードの読み出し・保存が出来る • Smart Lock for PasswordsをCredentialManagerに移行しようとしたら、 UIが重複表示される事象が発生した ◦
Android14以降でPassword入力のEditTextを使うことが条件 • 解決方法 ◦ EditTextにisCredential=trueを付ける ◦ Composeに移行する 40