Comment gérer les rappels d'URL OAuth avec les filtres Intent si l'authentification est effectuée avec Webview?

Je développe une application qui utilise OAuth pour l'authentification, mais j'ai un petit problème de gestion d'authentification OAuth pour les rappels.

L'AUTHENTIFICATION

Mon application a un webview que l'écran de connexion et je suis une url pour charger le formulaire d'autorisation dans mon webview. Disons que l'url est :

https://myoauthhost.com/oauth/auth?response_type=code&client_id=XXXXXXX&redirect_uri=YYYYYYYY&scope=ZZZZZZZZZZ

et dans la auth activité (AuthActivity.java), j'ai le texte suivant :

    String authURL = https://myoauthhost.com/oauth/auth?response_type=code&client_id=XXXXXXX&redirect_uri=YYYYYYYY&scope=ZZZZZZZZZZ
    myWebView.loadUrl(authURL);

dans le manifest.xml, j'ai le texte suivant pour oauth rappel de la manipulation :

<activity
            android:name=".AuthActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >

            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data
                    android:host="authprovider"
                    android:scheme="auth" />
            </intent-filter>
</activity>

LE PROBLÈME

Cette url utilisée dans la webview (avec loadURL ()) redirige vers une autre url qui contient le RÉEL OAUTH WEB DE (qui doit être chargé dans la webview). Le problème est que cette redirection lance automatiquement le intention de sélection dans Android : depuis l'URL doit être manipulé par un navigateur web, Android vous permet de choisir le navigateur web du téléphone pour ouvrir l'url.

Puisque ce n'est pas ce que je veux, je dois inclure le code suivant pour que la redirection est géré à l'intérieur de la webview, mais ne pas lancer un navigateur web (ou autre) :

myWebView.setWebViewClient(new WebViewClient());

donc, avec ce code, la redirection est géré "dans la webview" et j'ai l'écran de connexion affiche.

Je peux ensuite entrez les informations d'identification (e.g : via oauth de Twitter), mais lorsque l'authentification est réalisée, le retour d'appel est reçu, mais l'activité qui est censé gérer le rappel (AuthActivity configuré pour recevoir de rappel dans le manifeste) n'est pas lancé. Au lieu de cela, j'ai la webview l'affichage d'un message disant que l'url de callback (dans notre cas : authprovider://auth/XXX?xxx=yyy, tel que défini dans le manifeste) ne peut pas être trouvé.

La raison peut être que le code suivant :

myWebView.setWebViewClient(new WebViewClient());

présenté plus tôt, raconte Android que la webview s'occupe de tout. Alors maintenant, depuis l'url de callback n'est pas une url de site web, il a de la difficulté à manipuler et ne peut même pas lancer l'intention qui peut s'en occuper.

LA QUESTION

Comment puis-je résoudre ce problème ?
Je devrais être en mesure de laisser l'activité de gérer le rappel, mais ne pas laisser la webview essayer de le charger.

toute aide serait appréciée

merci d'avance

source d'informationauteur kaffein