Après l'authentification à partir de mon application, une nouvelle fenêtre s'affiche qui redirige ensuite vers l'application. Ensuite, onNewIntent() est appelé dans mon activité. Mais lorsque je choisis de revenir à mon application, la page web de Twitter s'affiche toujours. La page Twitter avec une redirection vers l'application ne devrait pas être affichée. Comment puis-je fermer la page web de Twitter ?
Réponses
Trop de publicités?J'appelle cette méthode depuis mon activité
public void askOAuth(Context context,Handler handler) {
_msg = new Message();
_msg.arg1 = AUTHORISE_TWITTER_APP;
mContext=context;
this.handler=handler;
consumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY,CONSUMER_SECRET);
provider = new DefaultOAuthProvider(
"http://twitter.com/oauth/request_token",
"http://twitter.com/oauth/access_token",
"http://twitter.com/oauth/authorize");//
//provider.setOAuth10a(true);
String authUrl = provider.retrieveRequestToken(consumer,CALLBACK_URL);
mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)));
}
Cela ouvre une vue web (page Twitter qui redirige vers mon activité). Après cela, il appelle onNewIntent()
la fonction de mon activité et de mon activité est affichée mais lorsque j'appuie sur le bouton retour, la page Twitter s'affiche à nouveau, et mon problème est de savoir comment fermer cette page Twitter.
Ma suggestion est la suivante PAS lancer "authURL" dans une nouvelle fenêtre du navigateur web. Ce que je préfère faire personnellement, c'est de lancer une nouvelle activité qui contient une WebView et de passer l'URL à cette activité. De cette façon, il est plus facile pour vous de gérer la navigation dans votre application pendant le processus d'authentification Oauth. Donc au lieu de faire ça :
String authUrl = provider.retrieveRequestToken(consumer,CALLBACK_URL);
mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)));
Je ferais ça à la place :
Intent intent = new Intent(mContext, YourActivityWithAWebView.class);
intent.putExtra("AUTH_URL", authUrl);
startActivity(intent);
Ensuite, dans votre WebView, vous pouvez utiliser la méthode shouldOverrideUrlLoading() pour obtenir l'URL du VERIFIER et récupérer votre vérificateur Oauth.
J'espère que cela vous aidera !
La nouvelle fenêtre est-elle une activité ? Si oui, à partir de votre activité principale, appelez startActivityForResult()
et implémenter les callbacks.
Lorsque votre callback est déclenché, vous pouvez recharger votre webview si nécessaire.
Vous pouvez également restructurer votre application de manière à ce que l'option onCreate()
de votre activité principale est suffisamment intelligente pour ne pas afficher un ancien résultat dans la vue web.