Muchísimas gracias!!!!!!!
Al final entre una cosa y la otra he conseguido lanzar la aplicación y
se me abre el navegador con las url que le introduzco. Pero nada mas
arrancar el navegador ya me dice "Invalid token". Entonces tengo
ciertas dudas...
He añadido una serie de librerías al proyecto y parece todo correcto,
os pongo el código y pongo en mayúsculas donde tengo ciertas dudas:
protected void onResume() {
// extract the OAUTH access token if it exists
Uri uri = this.getIntent().getData();
if(uri != null) {
ProgressDialog dialog = ProgressDialog.show(this, "",
"Logging en E2E Medianet, please wait...", true);
access_token = uri.getQueryParameter("oauth_token");
access_token = convertToAccessToken(client.requestToken);
// setDefaultAccessToken(access_token, this); // keep this in
the database
dialog.cancel();
}
super.onResume();
}
public String convertToAccessToken(String request_token) {
ArrayList<Map.Entry<String, String>> params =
new ArrayList<Map.Entry<String, String>>();
OAuthClient oclient = new OAuthClient(new HttpClient4());
OAuthAccessor accessor = client;
params.add(new OAuth.Parameter("oauth_token", request_token));
try {
OAuthMessage omessage = oclient.invoke(accessor, "POST",
accessor.consumer.serviceProvider.accessTokenURL, params);
return omessage.getParameter("oauth_token");
} catch (Exception ioe) {
return "";
}
}
private void sendData() {
// Intent intent = new Intent(); // para abrir una nueva ventana
// intent.setClass(E2EMain.this, ListWorkers.class);
// // donde estoy y a donde quiero ir
// startActivity(intent);
// get the request token
ProgressDialog dialog = ProgressDialog.show(this, "",
"Comunicandose con E2E, please wait...", true);
client = defaultClient();
dialog.cancel();
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(client.consumer.serviceProvider.userAuthorizationURL
+
"?oauth_token=" +
client.requestToken +
"&oauth_callback=" +
client.consumer.callbackURL));
startActivity(i);
}
OAuthServiceProvider defaultProvider() { /////////////////////TENGO
LA DUDA DE SI ESTAS URL SON LAS QUE ME TIENEN QUE PROPORCIONAR EL
TOKEN
return new OAuthServiceProvider("
https://www.google.com/accounts/
OAuthGetRequestToken", "
https://www.google.com/accounts/
OAuthAuthorizeToken", "
https://www.google.com/accounts/
OAuthGetAccessToken");
}
OAuthAccessor defaultClient() {
String callbackUrl = "
http://www.google.com/
OAuthCallback/";/////////////LO MISMO CON EL CALLBACKURL Y EL
CONSUMERKEY Y EL CONSUMER SECRET
OAuthServiceProvider provider = defaultProvider();
String consumerKey = "anonymous";
String consumerSecret = "anonymous";
OAuthConsumer consumer = new OAuthConsumer(callbackUrl,
consumerKey,
consumerSecret, provider);
OAuthAccessor accessor = new OAuthAccessor(consumer);
OAuthClient oaclient = new OAuthClient(new HttpClient4());
try {
oaclient.getRequestToken(accessor);
request_token = accessor.requestToken;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (OAuthException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return accessor;
}
Y viendo otros ejemplos también tengo ciertas dudas en el manifiesto.
He añadido ciertos permisos, creo que son los correctos porque me
arranca bien la aplicación y me dice lo del "invalid token" pero la
duda que tengo es en esta linea en concreto: <!--
<data android:scheme="E2E"/>--> ¿que tengo que poner aquí?
<activity
android:name=".E2EMain"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<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:scheme="E2E"/>-->
</intent-filter>
</activity>
Yo creo, pero igual me equivoco, que con las librerías que tengo y
este código debería funcionar... entonces supongo que el error esta en
las urls pero claro tampoco estoy seguro....
On 7 feb, 19:38, Leonardo Garcia <
colo...@gmail.com> wrote:
> En el proyecto mio esta muy mezclado con mis cosas, es medio dificil de
> separar y creo que te vas a marear mas entre mis cosas y lo que realmente
> es.
>
> Esta es la pagina que tome de basehttp://
blog.doityourselfandroid.com/2011/08/06/oauth-2-0-flow-android/
>
> El proyecto que muestra de ejemplo esta aquihttps://
github.com/ddewaele/AndroidOauth2GoogleApiJavaClient
>
> Recuerdo que habia que ver algo de las versiones de las librerias, en los
> comentarios de la nota dice algo al respecto.
>
> Estoy seguro que desde esto, podras lograr lo que tu quieres, que es
> obtener el access_token :)
>
> Saludos y Suerte!!
>
> Leonardo
>
> 2012/2/7 Jose Alberto Rodríguez Martín <
jarodriguez...@gmail.com>
>
>
>
>
>
>
>
> > Por aqui mejor por si mas adelante sirviese para otro.
> > El 07/02/2012 19:27, "Leonardo Garcia" <
colo...@gmail.com> escribió:
>
> > Ruben, creo que encontre algo que te puede servir, yo hice hace un tiempo
> >> un oauth 2.0 con google desde android, no tengo la pagina de donde tome la
> >> fuente, pero si tengo el codigo,
>
> >> Recuerdo que para la parte de las credenciales utilizaba un webview, para
> >> no hacer un intent al navegador y no hacer que te tome el usuario logueado
> >> que tu usas.
>
> >> Son 3 clases y un activity que se encarga de toda la actividad, ahora te
> >> lo voy a enviar por correo privado porque no se si funcionara que adjunte
> >> archivos aqui... aunque pensandolo bien estaria bueno que lo adjunte aqui y
> >> quede para descargar...
>
> >> Bueno, los que sepan como conviene que quede este codigo disponible para
> >> todos me dicen y lo hago, por lo pronto yo se lo envio directamente a ruben.
>
> >> Saludos y Suerte!!
>
> >> Leonardo Garcia
>
> >> 2012/2/7 Jose Alberto Rodríguez Martín <
jarodriguez...@gmail.com>
>
> >>> Te perdonamos pero ya sabes pa la próxima jeje.
>
> >>> Un saludo,
> >>> Jose Alberto
> ...
>
> leer más »