Acerca de las Opciones de Autenticación para las Aplicaciones Oracle Mobile Hub
Los usuarios pueden autenticarse con la aplicación Oracle Mobile Hub mediante un número de tecnologías, entre las que se incluyen OAuth, conexión única, autenticación HTTP básica y conexión Facebook.
Acerca del Consumidor de OAuth
Los usuarios pueden autenticarse con sus aplicaciones de Oracle Mobile Hub para Android mediante el consumidor de OAuth.
En primer lugar, inicialice el agente de autorización y defina el tipo de autenticación en OAUTH
:
private AuthorizationAgent mAuthorization;
private MobileBackend mobileBackend;
try {
mobileBackend = MobileManager.getManager().getMobileBackend(this);
} catch (ServiceProxyException e) {
e.printStackTrace();
}
mAuthorization = mobileBackend.getAuthorization(AuthType.OAUTH);
A continuación, utilice el método authenticate
para intentar la autenticación. La llamada incluye parámetros para el contexto Android, el nombre de usuario, la contraseña y una devolución de llamada que completa el proceso de autorización:
TextView username, password;
username = (TextView) findViewById(R.id.username);
password = (TextView) findViewById(R.id.password);
String userName = username.getText().toString();
String passWord = password.getText().toString();
mAuthorization.authenticate(mCtx, userName, passWord, mLoginCallback);
A continuación se muestra la definición de la devolución de llamada:
AuthorizationCallback mLoginCallback = new AuthorizationCallback() {
@Override
public void onCompletion(ServiceProxyException exception) {
Log.d(TAG, "OnCompletion Auth Callback");
if (exception != null) {
Log.e(TAG, "Exception while receiving the Access Token", exception);
} else {
Log.e(TAG, "Authorization successful");
}
}
}
Acerca de la Autenticación de Single Sign-On con un Token de Terceros
Puede autenticar su aplicación móvil mediante un token emitido por un proveedor de terceros.
Primero, su aplicación necesita obtener un token del emisor de tokens de terceros. El modo en que puede obtener el token varía según el emisor.
Una vez que tenga el token, inicialice el agente de autorización y utilice el token en la llamada de autorización.
private AuthorizationAgent mAuthorization;
private MobileBackend mobileBackend;
Context mCtx = getApplicationContext();
try {
mobileBackend = MobileManager.getManager().getMobileBackend(this);
} catch (ServiceProxyException e) {
e.printStackTrace();
}
mAuthorization = mobileBackend.getAuthorization(AuthType.TOKENEXCHANGE);
A continuación, utilice el método authenticateUsingTokenExchange
para intentar la autenticación.
mAuthorization.authenticateUsingTokenExchange(mCtx, token, false, mLoginCallback);
A continuación se muestra la devolución de llamada:
AuthorizationCallback mLoginCallback = new AuthorizationCallback() {
@Override
public void onCompletion(ServiceProxyException exception) {
if (exception == null) {
//redirect to another Activity after login
Intent intent = new Intent(mCtx, ContentActivity.class);
startActivity(intent);
} else {
Log.e(TAG, "Exception during token exchange:", exception);
finish();
}
}
};
Nota:
El tiempo de caducidad por defecto para almacenar un token de terceros en Oracle Mobile Hub es de 6 horas. Puede ajustar este tiempo si cambia la políticaSecurity_TokenExchangeTimeoutSecs
.
También puede codificar la aplicación para mantener la conexión del usuario, incluso al cerrar y reiniciar la aplicación.
En el ejemplo anterior, se llama al método authenticateUsingTokenExchange()
con el tercer parámetro (storeToken
) definido en false
. Si define este parámetro en true
y el intercambio de tokens es correcto, el token MCS se almacena en un almacén seguro y el usuario permanece conectado hasta que caduque el token.
A continuación, puede utilizar el método loadSSOTokenExchange
en el objeto Authorization
para cargar el token almacenado. Si no se puede recuperar un token del almacén seguro, el método devuelve false
.
A continuación, se muestra un código que intenta cargar un token guardado y, si falla, reinicia el proceso de autenticación:
try {
mAuthorization = MobileManager.getManager().getMobileBackend(this).getAuthorization();
if (!mAuthorization.loadSSOTokenExchange(mCtx)) {
//user not logged in, so need to initiate login
mAuthorization.authenticateUsingTokenExchange(mCtx, token, true, mLoginCallback);
}
Cuando tenga el token almacenado en el almacén seguro, permanece asociado al backend móvil que la aplicación utilizó originalmente. Por lo tanto, si la aplicación se actualiza para utilizar un backend móvil diferente (o una versión de backend móvil), debe borrar el token guardado y volver a autenticarse.
mAuthorization.clearSSOTokenExchange(mCtx);
mAuthorization.authenticateUsingTokenExchange(mCtx, token, true, mLoginCallback);
Acerca de la Autenticación HTTP Básica
La autenticación de usuarios mediante HTTP Basic es similar a la autenticación mediante OAuth.
En primer lugar, inicialice el agente de autorización y defina el tipo de autenticación en BASIC_AUTH
:
private AuthorizationAgent mAuthorization;
private MobileBackend mobileBackend;
try {
mobileBackend = MobileManager.getManager().getMobileBackend(this);
} catch (ServiceProxyException e) {
e.printStackTrace();
}
mAuthorization = mobileBackend.getAuthorization(AuthType.BASIC_AUTH)
A continuación, utilice el método authenticate
para intentar la autenticación. La llamada incluye parámetros para contexto Android, nombre de usuario, contraseña y una devolución de llamada que completa el proceso de autorización.
TextView username, password;
username = (TextView) findViewById(R.id.username);
password = (TextView) findViewById(R.id.password);
String userName = username.getText().toString();
String passWord = password.getText().toString();
mAuthorization.authenticate(mCtx, userName, passWord, mLoginCallback);
A continuación se muestra la definición de la devolución de llamada:
AuthorizationCallback mLoginCallback = new AuthorizationCallback() {
@Override
public void onCompletion(ServiceProxyException exception) {
Log.d(TAG, "OnCompletion Auth Callback");
if (exception != null) {
Log.e(TAG, "Exception while receiving the Access Token", exception);
} else {
Log.e(TAG, "Authorization successful");
}
}
}
Acerca del Uso de la Conexión de Facebook
Si desea utilizar el inicio de sesión de Facebook, puede utilizar las clases en la biblioteca oracle_mobile_android_social
.
En primer lugar, inicialice el agente de autorización y defina el tipo de autenticación en Facebook
:
SocialAuthorizationAgent mAuthorization;
SocialMobileBackend socialMobileBackend;
try {
socialMobileBackend = SocialMobileBackendManager.getManager().getMobileBackend(mCtx);
} catch(ServiceProxyException e){
e.printStackTrace();
}
mAuthorization = socialMobileBackend.getSocialAuthorization(); mAuthorization.setAuthType(AuthType.FACEBOOK);
Mediante el uso de un objeto CallbackManager
del SDK de Facebook, inicie la autenticación.
private CallbackManager callbackManager;
mAuthorization.setup(getApplicationContext(), callback);
callbackManager = mAuthorization.getCallBackManager();
mAuthorization.authenticateSocial(mCtx);
Aquí se puede utilizar para el callback
que se ha pasado por encima:
private FacebookCallback<LoginResult> callback = new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.e(TAG, "facebook login successful.");
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException e) {
}
};
Sustituya el método onActivityResult()
para utilizar la devolución de llamada:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);