2017-07-25 57 views
5

我們擁有可在Android OS上運行但未包含Google Play服務的自定義設備。
我們已使用Webview Oauth2.0身份驗證的Google登錄。根據文件它已被刪除。
我看到有一種方法https://developers.google.com/identity/sign-in/android/,但是這似乎需要播放服務的gradle合併。
那麼我可以使用哪種方式進行Google身份驗證?
我發現了2個選項,但它們會對我有幫助嗎?
1. https://firebase.google.com/docs/auth/android/start/
2. https://developers.google.com/api-client-library/java/google-api-java-client/oauth2在沒有Google Play服務註冊的情況下爲oAuth Google使用webview的替代方案

它可以是最適合我的要求
請幫助。
問候,
Shraddha

回答

4

是的,的確谷歌前一段時間已經阻止通過應用程序的內部WebView登錄到它的服務的可能性。原因是Google不信任外部應用程序提供商,因爲它不知道連接的安全性。它迫使外部應用程序提供商使用Google登錄其服務的方法。

來源:Modernizing OAuth interactions in Native Apps for Better Usability and Security

事實上你卻找到了正確的方法使用谷歌的服務,火力地堡谷歌登錄有缺點,使他們ususable由你,即都需要谷歌播放服務Firebase needs themGoogle Sign-in needs them。因此,在沒有Google Play服務的設備上使用這兩種方法都沒有官方的方式。

還有另外一種方法:Chrome Custom Tabs。但是,他們需要在設備上安裝Chrome。並且由於很長一段時間it also uses Google Play Services。此外,Chrome的自定義選項卡已經被後來推出Chrome以外已將谷歌播放服務

然而,有一個黑客。將應用的內部WebView的用戶代理聲明爲Chrome。這裏是the documentation。在奇巧設備

  • wv上棒棒堂+設備

    • Version/_X.X_:截至本頁面底部看到的,你可以從WebView用戶代理字符串中刪除以下字符串。

    但是,我不推薦這種方法,並且如果有可能,請鼓勵堅持Google政策。

    希望這個解釋就夠了。

    編輯: 按下面的評論,Goole Api Java Client不需要谷歌播放服務,所以這可能是一個選項。

  • +0

    你好,非常感謝你的時間。根據SO上的答案:https://stackoverflow.com/questions/22142641/access-to-google-api-googleaccountcredential-usingoauth2-vs-googleauthutil-get Google API客戶端庫for Java是訪問Google服務的通用庫來自所有應用程序類型(網頁,安裝或Android應用程序)。所以它可以是沒有安裝播放服務的通用方式。對? –

    +1

    好的。根據本部分[Google Api Java客戶端](https://developers.google.com/api-client-library/java/google-api-java-client/oauth2#android)不需要Google Play服務。所以你可以試試。我沒有注意到,_Google Api Java Client_和_Google Sign-In_是兩個不同的東西。 –

    +0

    謝謝。但是,我們如何獲得令牌並授權用戶? –

    相關問題