2015-12-02 29 views
1

我正在將Google Smart Lock應用到我的應用中。我已經通過一個帳戶自動登錄用戶,並且運行良好。Smart Lock多帳戶分辨率始終顯示

但是,一旦我向混合中添加第二個帳戶,它總是顯示解析對話框來選擇我想要的帳戶。即使在我選擇並記錄並重新啓動應用程序後,這種情況仍會繼續顯示。

一旦我選擇了我想要智能鎖使用的帳戶,此對話框就不應再顯示,那麼它仍然顯示的原因是什麼?

- 謝謝

回答

3

我的智能鎖團隊在谷歌工作,希望這回答了你的問題:

  • 你注意,如果CredentialsApi.request() API方法並且該應用有多個已保存的帳戶,存儲在設備上的一個或多個Google帳戶中(或者用戶爲其某個帳戶禁用了自動登錄功能,或由開發人員通過呼叫CredentialsApi.disableAutoSignIn())該API會以CredentialRequestResultgetStatusCode()RESOLUTION_REQUIRED進行回叫,這意味着必須顯示UI以供用戶選擇憑證才能繼續。 startResolutionForResult()將顯示對話框,如API overview中所述。

  • 一旦應用程序擁有憑據,無論是從自動登錄還是用戶從對話框中選擇一個憑據後,大多數應用程序都將使用此憑據爲用戶簽署後端服務,並建立與cookie或令牌,並獨立於Smart Lock API進行管理。因此,在用戶登錄並存在當前會話後,大多數應用程序不會再次調用API,因此在初始登錄後對話框將不會再顯示。

  • 當用戶註銷時,呼叫CredentialsApi.disableAutoSignIn()將防止用戶在身份驗證活動再次啓動時自動重新登錄,並且當用戶從憑證選擇器中選擇條目時會自動管理和清除禁用狀態UI或成功呼叫,並且此時建立用戶會話並且不需要再次調用API直到註銷事件。

我覺得在這個問題上的混亂從調用API的使用者登入,他們可能已經有一個活動會話後莖。這是你的意圖嗎?如果您在用戶檢索或輸入密碼後需要在設備上管理應用程序的憑據,則可以在Android上使用Account Manager,該應用程序獨立於任何Google帳戶或API(而Smart Lock旨在保存符號 - 在雲中的信息,以便在新設備或獨立設備上的平臺上使用,以引導auth進程)。

未來,我們正在考慮記住用戶偏好,如果存儲多個賬戶並且總是選擇相同的賬戶,從而允許自動登錄,但是現在,當存在多個保存的賬戶時總是需要用戶動作可用。

如果您需要更多信息或澄清或如果這不能回答您的問題,請留下任何問題或反饋意見!

+0

謝謝史蒂文,這是我一直在尋找。我正在處理的應用程序要求用戶在每次重新啓動應用程序時都會重新登錄,因此我希望它自動完成。我目前每次重新啓動應用程序時都會檢索憑據,我正在使用憑據API來獲取存儲的登錄信息。在我看來,只要有多個帳戶,就必須顯示帳戶選擇對話框。我希望你能夠在將來增加額外的功能。謝謝您的幫助! – Elforama

+0

太棒了,你有一個指向你的應用程序的指針,它是否可以在Play商店?我會讓我們的UX/eng團隊看看這個用例,看看我們能否提出建議或考慮調整API。 –

+0

這將是一個很大的幫助,這裏是G + alpha社區。請加入此程序以使用SmartLock功能下載最新版本。 https://plus.google.com/communities/109600259045316723754 – Elforama

0

當你有多個賬戶,你將永遠顯示此分辨率的對話框。 看看這個: https://developers.google.com/identity/smartlock-passwords/android/images/smartlock-passwords-flow.png

來自:https://developers.google.com/identity/smartlock-passwords/android/overview

+0

這似乎破壞了自動登錄功能的用途。在文檔中稍微深入一點,它提到如果用戶註銷,則禁用自動登錄以讓用戶使用不同的帳戶登錄。當他們使用其他帳戶登錄時,不應禁用自動登錄功能,而應該開始將其登錄到他們的新帳戶中。也許我在這裏錯過了一些東西。 – Elforama

+0

我認爲90%的用戶將擁有一個帳戶。 在我的情況下,多個帳戶,我總是看到這個對話框。 當我有一個帳戶>>自動登錄 如果我註銷>>對話框(即使我有一個帳戶) – Pauland