2017-03-22 1 views
13

Nous avons une application pour un appareil Android intégré, il utilise WebView et à l'intérieur, nous utilisons Google OAuth 2 pour se connecter à l'application. Malheureusement Google will soon block OAuth 2 inside WebView, et nous avons beaucoup de restrictions: (? Ou peut-être aucun d'entre eux travailleraient sans services Google)Utilisation de Google OAuth 2 sur un appareil Android intégré

  • L'appareil ne dispose pas des services Google installé, donc probablement pas 'official' way of logging in travaillerait
  • Nous pouvons Ne pas invoquer navigateur Android pour faire la connexion, car il montre la barre d'adresse, ce qui permettrait à l'utilisateur de surfer sur Internet, que nous ne pouvons pas autoriser
  • Nous ne contrôlons pas entièrement le logiciel installé sur l'appareil: peut ' t installez les services Google, mettez à jour la version Android, installez Google Chrome, etc ..., nous pouvons simplement mettre à jour notre application.

Que pourrions-nous faire d'autre avec ces restrictions?

+0

Votre application nécessite que les utilisateurs l'autorisent à accéder à leurs propres ressources? Si non, alors vous n'avez probablement pas besoin d'OAuth. Oauth n'est pas une authentification – pinoyyid

+0

Malheureusement, ce sont les exigences de nos clients, ils ont des comptes Google Apps que nous devons utiliser pour l'authentification. – iirekm

+0

Soyez clair, OAuth n'est pas l'authentification. L'authentification de Google nécessite au moins un navigateur Web (plus pour 2FA), il n'y a aucun moyen de contourner cela. – pinoyyid

Répondre

0

Vous devez utiliser les services Web OAuth pour mettre en œuvre une solution adaptée à vos besoins.

lien de référence: https://developers.google.com/+/web/api/rest/oauth

Voici un exemple de projet github qui utilise un service web OAuth 2 pour se connecter à Twitter. Vous pouvez prendre de l'aide pour consommer les services Web OAuth2 de Google dans votre application Android.

lien Repository:
https://github.com/sathify/tagpulse

écran de consommation Service Web lien: https://github.com/sathify/tagpulse/blob/master/android/src/tag/pulse/main.java

J'espère que cela aide.

+0

ceci est à propos de oauth 1, google ne le supporte pas pendant des années – iirekm

1

Comme par les problèmes de votre côté, il serait préférable d'ouvrir une intention à partir de l'application ciblée sur le signe weburl [ce ne déclenche pas jusqu'à l'adresse du lien bar]

Reportez-vous à cette page stackoverflow how to open "Add a Google Account" activity using intent?

maintenant vous pouvez utiliser Préférences partagées pour stocker les données d'authentification pour d'autres connexions [si les exigences de l'application le permet.]

https://developer.android.com/reference/android/content/SharedPreferences.html

1

mise en œuvre par le biais d'un navigateur:

1) Enregistrer schéma d'URI personnalisé (How to implement my very own URI scheme on Android), par exemple, app-oauth2: //

2) faire une demande d'accès navigateur de l'utilisateur

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) Si l'utilisateur accepte ou refuse les droits demandés i n la boîte de dialogue de confirmation, il sera redirigé vers redirect_uri (http://example.com/oauth2-handler) avec quelques params

4) Sur le côté du gestionnaire redirect_uri (http://example.com/oauth2-handler), jument une redirection vers URI régime personnalisé avec params:

  • succès:app-oauth2: // state = state_parameter_passthrough_value & code = ... & scope = ... #
  • Échec:app-oauth2: // error = access_denied & state = state_parameter_passthrough_value #

5) Dans votre application, vous pouvez analyser schéma URI app-oauth2: // de l'option 4 et recevoir le code pour une utilisation future ou une erreur pour l'afficher à l'utilisateur.

+0

On dirait une solution viable. Des pensées comment cela pourrait fonctionner avec Cordova? –

+0

Si Cordova prend en charge la gestion des protocoles personnalisés et la possibilité d'ouvrir le navigateur de l'utilisateur - oui. – cetver