Mi aplicación solo tiene un cliente, ¿cómo realizar la autorización de usuario?

Alguien publicó en el Foro de desarrolladores de Huawei diciendo que solo tienen una aplicación independiente y no un servidor ¿Cómo puedo implementar la función de inicio de sesión de mi cuenta de Huawei?

1

 

En primer lugar, debemos entender que el inicio de sesión de la cuenta se basa en el protocolo estándar OAuth 2.0 y el protocolo OpenID Connect. Admite dos métodos de inicio de sesión autorizados, el código de autorización y el token de identificación, lo que significa que la aplicación puede obtener la información de autenticación de identidad del usuario de la cuenta ( ID Token) o el ticket de autorización temporal del usuario (código de autorización) permite al usuario iniciar sesión de forma segura.

¿Qué es el código de autorización?

El código de autorización es un código de autorización de una sola vez. El código de autorización y el AppSecret asignado se utilizan principalmente para la autenticación en el servidor OAuth. El modo de código de autorización es un modo de ticket de autorización temporal, que solo es adecuado para aplicaciones con su propio servidor.

¿Qué es ID Token?

El token de identificación es la información de identidad del usuario que inició sesión, incluida la información de la firma utilizada para verificar la información de identidad. El modo ID Token es el modo de información de autenticación de la identidad del usuario. Este modo es adecuado tanto para aplicaciones independientes como para aplicaciones con su propio servidor.

A continuación, echemos un vistazo a estos dos modos de inicio de sesión:

2

 

El token de acceso en la figura es un token que se usa para acceder a los recursos del usuario, que es equivalente a una clave; Refresh Token es un token que se usa para obtener un nuevo token de acceso después de que expire el token de acceso anterior.

De acuerdo con el proceso anterior, cuando el usuario selecciona la cuenta de Huawei para iniciar sesión, la aplicación inicia una solicitud de inicio de sesión al HMS SDK. En los pasos 2 a 5, la cuenta de Huawei abre la interfaz de autorización de inicio de sesión del usuario. La interfaz informará explícitamente al usuario del contenido que debe autorizarse de acuerdo con el dominio de autorización o la información de alcance que se incluye en la solicitud de inicio de sesión, y el usuario hace clic en para confirmar la autorización. Pasos 7-9, el servidor HUAWEI ID OAuth devuelve la información del código de autorización. Paso 10: el cliente de la aplicación carga el código de autorización en el servidor de la aplicación. Pasos 11-12, el servidor de aplicaciones intercambia el código de autorización para el token de acceso, el token de actualización, el token de identificación y otra información. Por último, el servidor de aplicaciones utiliza el token de acceso para obtener el openId del usuario y otra información del Centro de autorización de cuentas de Huawei. Si el token de acceso o el token de identificación caduca, el servidor de aplicaciones puede usar el token de actualización para obtener la información del nuevo token de acceso y el token de identificación.

Inicio de sesión con token de identificación

3

 

El proceso de inicio de sesión de ID Token es el siguiente: Primero, cuando el usuario selecciona una cuenta de Huawei para iniciar sesión, la aplicación inicia una solicitud de inicio de sesión al HMS SDK. En el paso 2-14, la cuenta de Huawei abre la interfaz de autorización de inicio de sesión del usuario. La interfaz informará explícitamente al usuario del contenido que necesita ser autorizado de acuerdo con el dominio de autorización o la información de alcance contenida en la solicitud de inicio de sesión, y el usuario hace clic en para confirmar la autorización. Pasos 15-17, HMS SDK devuelve directamente el Token de ID y otra información después de la autorización. Una vez que la aplicación obtiene el Token de ID, puede autenticarse verificando el Token de ID. Para verificar el Token de ID, consulte: Verificación local o Verificación del servidor de aplicaciones .

El modo de código de autorización y el modo de token de identificación son diferentes. El modo de código de autorización es adecuado para aplicaciones con servidores. AccessToken se obtiene a través de AuthCode. Cada vez que se solicita un servidor de aplicaciones, el servidor de aplicaciones debe verificar la validez del AccessToken para completar el autenticación. El modo ID Token es que el programa de aplicación obtiene directamente la información del ID Token del usuario y, cuando se utiliza la aplicación, la aplicación completa localmente la autenticación verificando la validez del ID Token. En resumen, cuando la App solo tiene un cliente, podemos implementar la autorización de usuario a través del modelo ID Token .

Pasos de desarrollo del modelo de token de identificación :

El primer paso es crear un objeto HuaweiIdAuthParams

AccountAuthParams authParams = new AccountAuthParamsHelper(AccountAuthParams.DEFAULT_AUTH_REQUEST_PARAM).setIdToken().createParams();

Este es el objeto de los parámetros de inicio de sesión de autorización de la cuenta de Huawei, incluido el método de inicio de sesión seleccionado por el usuario y la información del dominio de autorización y el Alcance, que es el alcance de los permisos otorgados por el usuario a la aplicación de terceros. Este objeto es creado por el Objeto HuaweiIdAuthParamsHelper, es decir, queremos construir un objeto HuaweiIdAuthParams compuesto por parámetros predeterminados. Luego llame al método setIdToken, es decir, configúrelo para usar el modo ID Token.

El segundo paso es crear un objeto HuaweiIdAuthService

AccountAuthService service = AccountAuthManager.getService(MainActivity.this, authParams);

HuaweiIdAuthService utiliza el objeto HuaweiIdAuthParams como parámetro, que define métodos como autorización silenciosa, salida y cancelación de autorización. El método getSignInIntent devuelve un objeto de intención. El objeto Intent es el medio a través del cual la actividad transmite información. Contiene la información de intent para iniciar la actividad autorizada. Las operaciones posteriores del cliente deben completarse a través de la API de este objeto, como abrir la página de autorización y registrar fuera de la cuenta de Huawei.

5

 

El tercer paso es llamar a startActivityForResult

startActivityForResult(service.getSignInIntent(), 8888);

Usamos la información de la intención obtenida en el método HuaweiIdAuthService. GetSignInIntent () para llamar al método startActivityForResult para iniciar la página de autorización del usuario.

 

El cuarto paso es llamar a onActivityResult para obtener información de la cuenta a partir del resultado de inicio de sesión

@Override 
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    //授权登录结果处理,从AuthAccount中获取ID Token
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 8888) {
        Task<AuthAccount> authAccountTask = AccountAuthManager.parseAuthResultFromIntent(data);
        if (authAccountTask.isSuccessful()) {
            //登录成功,获取用户的帐号信息和ID Token
            AuthAccount authAccount = authAccountTask.getResult();
            Log.i(TAG, "idToken:" + authAccount.getIdToken());
            //获取帐号类型,0表示华为帐号、1表示AppTouch帐号
            Log.i(TAG, "accountFlag:" + authAccount.getAccountFlag());
        } else {
            //登录失败,不需要做处理,打点日志方便定位
            Log.e(TAG, "sign in failed : " +((ApiException) authAccountTask.getException()).getStatusCode());
        }
    }
}

Una vez que el usuario ha sido autorizado correctamente, podemos obtener la información de la cuenta en el método onActivityResult. El método AccountAuthManager.parseAuthResultFromIntent se usa para obtener la información de inicio de sesión del usuario a partir de los datos de la intención, y el siguiente paso es verificar la validez del token de identificación .

6

 

>> Visite el sitio web oficial de Huawei Developer Alliance para obtener más información al respecto

>> Obtenga documentos de orientación de desarrollo

>> Dirección del almacén de código abierto del servicio móvil de Huawei: GitHub , Gitee

Síganos y conozca la información técnica más reciente de los servicios móviles de Huawei por primera vez ~

 

Supongo que te gusta

Origin blog.csdn.net/HUAWEI_HMSCore/article/details/114656820
Recomendado
Clasificación