2017-03-22 79 views
13

我們有一個基於Android的嵌入式設備的應用程序,它使用WebView,並在其中使用Google OAuth 2登錄到應用程序。不幸的是Google will soon block OAuth 2 inside WebView,我們有很多的限制:(?也許任何人都會沒有谷歌服務工作)在基於Android的嵌入式設備上使用Google OAuth 2

  • 該設備沒有安裝谷歌服務,因此大概沒有'official' way of logging in會工作
  • 我們可以只是調用Android瀏覽器進行登錄,因爲它顯示地址欄,這將允許用戶上網,這是我們不能允許的
  • 我們不完全控制安裝在設備上的軟件:can'不要安裝Google服務,更新Android版本,安裝谷歌瀏覽器等,我們只需更新我們的應用程序即可。

我們還有什麼可以做這些限制嗎?

+0

你的應用需要用戶授權才能訪問自己的資源?如果沒有,那麼你可能不需要OAuth。 Oauth不認證 – pinoyyid

+0

不幸的是,這些是我們客戶的要求,他們有谷歌應用程序帳戶,我們必須使用它進行身份驗證。 – iirekm

+0

要清楚,OAuth不是身份驗證。谷歌的身份驗證至少需要一個Web瀏覽器(更多用於2FA),這是沒有辦法的。 – pinoyyid

回答

0

您需要使用OAuth Web服務來根據您的需求實施解決方案。

參考鏈接https://developers.google.com/+/web/api/rest/oauth

下面是使用OAuth 2 web服務登錄到Twitter的一個樣本github上的項目。您可以從中獲取幫助,以便在您的Android應用程序中使用Google的OAuth2網絡服務。

Repository鏈接:
https://github.com/sathify/tagpulse

Web服務消費屏幕鏈接: https://github.com/sathify/tagpulse/blob/master/android/src/tag/pulse/main.java

我希望這有助於。

+0

這是關於oauth 1,谷歌不支持它多年 – iirekm

1

實現通過瀏覽器:

1)註冊自定義URI方案(How to implement my very own URI scheme on Android),例如,應用程序-的oauth2://

2)使在訪問請求用戶的瀏覽器

https://accounts.google.com/o/oauth2/v2/auth? 
scope=... 
access_type=offline& 
include_granted_scopes=true& 
state=state_parameter_passthrough_value& 
redirect_uri=http://example.com/oauth2-handler& 
response_type=code& 
client_id=... 

3)如果用戶接受或拒絕請求的權利我n中的確認對話框中,它會被重定向到REDIRECT_URIhttp://example.com/oauth2-handler)與一些PARAMS

4)在REDIRECT_URI處理機http://example.com/oauth2-handler側),母馬重定向到自定義URI方案使用參數:

  • 成功:APP-的oauth2://狀態= state_parameter_passthrough_value &碼= ... &範圍= ...#
  • 失敗:APP-的oauth2://錯誤= ACCESS_DENIED &狀態= state_parameter_passthrough_value#

5)在您的應用程序,你可以解析URI方案APP-的oauth2://從選項4接收未來使用的代碼或錯誤以顯示給用戶。

+0

看起來像一個可行的解決方案。任何想法如何這可能與科爾多瓦工作? –

+0

如果Cordova支持自定義協議處理和打開用戶瀏覽器的可能性 - 是的。 – cetver

相關問題