|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectam.oauth.OAuth
public class OAuth
Implementación de algunas utilidades para el uso transparente del protocolo OAuth.
Antes de realizar cualquier petición a una API que requiera permiso previo del usuario al cual pertenecen los datos, será necesario establecer una negociación de autorización con la entidad (en este caso, Yahoo!). Al final de la negociación se consiguen una serie de claves (y fechas de expiración de éstas), que son las que se utilizarán para firmar las peticiones a la API.
Por tanto, antes de una llamada a la API en cuestión, se debe crear un objeto de la clase OAuth. Este objeto se encargará de conseguir las claves y firmar las peticiones a lo largo de toda la sesión (no es necesario crear otro distinto).
En el constructor se pasa el objeto Activity del cual depende y un Bundle que puede contener, o bien sólo "Consumer Key" y "Shared Secret", o bien además el resto de datos: "Access Token", "Access Token Secret", "Access Token Expiry", "Session Credential" y "Session Credential Expiry". Dependiendo de los datos recibidos se pueden tomar caminos diferentes:
canWork()
devuelven
false.canWork()
devuelve true, y se analizan el resto de los datos:isWorking()
devuelve true.isWorking()
devuelve true.
while(!isWorking());
Puesto que al construir el objeto se puede lanzar una subactividad de la que recibe como
parámetro, esta Activity debe implementar el método Activity#onActivityResult()
como se muestra a continuación:
protected void onActivityResult (int requestCode, int resultCode, Intent data){
switch(requestCode){
case OAuth.OAUTH_ACTIVITY:
oauth.onActivityResult(requestCode, resultCode, data);
// TU CÓDIGO TRAS EL FIN DE LA NEGOCIACIÓN OAUTH
break;
// TU CÓDIGO PARA OTRAS ACTIVIDADES HIJAS DE ÉSTA
default:
}
}
Una vez que se ha creado el objeto y isWorking()
devuelve true,
se pueden hacer peticiones:
getSecrets()
createAuthorizationHeader(String, String, String[][])
urlEncode(String)
Field Summary | |
---|---|
static int |
OAUTH_ACTIVITY
Identificador de la Activity que lanza el objeto si es necesario conseguir el resto de claves. |
Constructor Summary | |
---|---|
OAuth(Activity parent,
Bundle oauth)
Inicializa un objeto OAuth de modo que internamente se establezca una relación de autorización usando los secretos proporcionados. |
Method Summary | |
---|---|
boolean |
canWork()
Determina si se pueden conseguir todas las claves OAuth con la información disponible. |
String |
createAuthorizationHeader(String method,
String url,
String[][] params)
Genera el contenido de la cabecera Authorization que se debe incluir en peticiones OAuth HTTP con los datos criptográficos disponibles y la información específica de la petición. |
Bundle |
getSecrets()
Proporciona un Bundle con los datos OAuth disponibles: "Consumer Key" y "Shared Secret" si canWork() devuelve true, y además "Access Token", "Access Token Secret",
"Access Token Expiry", "Session Credential" y "Session Credential Expiry"
actualizados si isWorking() devuelve true. |
boolean |
isWorking()
Determina si se pueden generar cabeceras Authorization. |
void |
onActivityResult(int requestCode,
int resultCode,
Intent data)
Método que debe llamarse desde Activity#onActivityResult() de la Activity
que recibió como parámetro en el constructor cuando requestCode es
igual a OAUTH_ACTIVITY . |
String |
urlEncode(String text)
Transforma un String en otro que puede ser enviado como la parte de parámetros de una URL. |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final int OAUTH_ACTIVITY
Constructor Detail |
---|
public OAuth(Activity parent, Bundle oauth)
Este constructor recibe, por un lado, una Activity de la que depende para lanzar una nueva Activity en caso necesario, y en la que mostrará mensajes de error; y por otro lado, un Bundle con datos necesarios para establecer la relación: "Consumer Key" y "Shared Secret" y, opcionalmente, también "Access Token", "Access Token Secret", "Access Token Expiry", "Session Credential" y "Session Credential Expiry" (se deben respetar las mayúsculas/minúsculas).
Method Detail |
---|
public Bundle getSecrets()
canWork()
devuelve true, y además "Access Token", "Access Token Secret",
"Access Token Expiry", "Session Credential" y "Session Credential Expiry"
actualizados si isWorking()
devuelve true.
public void onActivityResult(int requestCode, int resultCode, Intent data)
Activity#onActivityResult()
de la Activity
que recibió como parámetro en el constructor cuando requestCode
es
igual a OAUTH_ACTIVITY
.
requestCode
- el valor correspondiente en la ActivityresultCode
- el valor correspondiente en la Activitydata
- el valor correspondiente en la Activitypublic String createAuthorizationHeader(String method, String url, String[][] params)
method
- método de petición HTTP: GET, POST o HEAD.url
- URL a la que se enviará la petición.params
- array de parámetros en la forma nombre-valor. En cada fila contiene
un array de 2 Strings, de modo que en la primera
posición aparezca el nombre del parámetro y en la seguda el valor.
Si la petición no tiene parámetros, debe ser null.
public String urlEncode(String text)
text
- el String que debe ser codificado.
public boolean isWorking()
public boolean canWork()
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |