2010-09-14 18 views
4

J'ai construit une application Android qui nécessite OAuth. Tout fonctionnait bien en utilisant un rappel de système personnalisé qui est intercepté par Android. Il semble que Yahoo a changé les messages de but et maintenant le schéma personnalisé n'est pas accepté par Yahoo.Android intentionnel-filtre pour schéma http

Je suis en train d'examiner d'autres approches possibles. Ma première tentative consiste à utiliser un schéma http normal et à modifier mon filtre d'intention pour intercepter la nouvelle URL. J'ai ce qui suit dans mon AndroidManifest.xml:

<intent-filter> 
    <action android:name="android.intent.action.VIEW"></action> 
    <category android:name="android.intent.category.DEFAULT"></category> 
    <category android:name="android.intent.category.BROWSABLE"></category> 
    <data android:host="www.test.com" android:scheme="http"></data> 
    </intent-filter> 

Où www.test.com sera substitué par un domaine que je possède. Il semble:

  • Ce filtre est déclenché lorsque je clique sur un lien sur une page.
  • Il n'est pas déclenché sur la redirection par Yahoo, le navigateur ouvre le site Web à www.test.com
  • Il n'est pas déclenché lorsque j'entre le nom de domaine directement dans le navigateur.

Alors quelqu'un peut me aider avec

  • Quand exactement ce filtre l'intention sera déclenchée?
  • Toute modification du filtre d'intention ou des autorisations qui va élargir le filtre à appliquer aux demandes de redirection?
  • D'autres approches que je pourrais utiliser?

Merci pour votre aide.

+0

oh non j'ai actuellement le même problème, donc je dois vraiment créer un script de redirection? il doit y avoir une meilleure solution .. –

Répondre

3

Que diriez-vous d'une solution alternative, en plaçant sur votre site www.test.com un script qui extrait les paramètres oauth et redirige vers votre système de rappel personnalisé?

comme par exemple oauth.php (pardonnez mon PHP ...)

<? 
header('Location:myschema://mythost?oauth_verifier='.urlencode($_GET['oauth_verifier']). 
    '&oauth_token='.urlencode($_GET['oauth_token'])); 
die(); 
?> 

Je l'utilise avec succès pour Google OAuth qui a la même restriction sur l'URL de rappel.

+0

Merci. C'est l'approche que j'ai également utilisée à la fin. C'est maladroit mais ça marche. Juste frustrant d'ajouter un saut supplémentaire dans le processus. –