AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Funciones WLanguage / Comunicación / Gestión del protocolo OAuth 2.0
  • Modo de funcionamiento de la autenticación OAuth 2.0
  • Modo de funcionamiento de la autenticación OpenID
  • Aplicación en segundo plano: Caso específico a partir de Android 10
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Realiza una autenticación utilizando:
  • el protocolo OAuth 2.0 en cualquier servicio Web.
  • iPhone/iPadIOS WidgetMac Catalyst el protocolo OpenID en cualquier servicio Web.
  • Novedad versión 2024
    iPhone/iPadIOS WidgetMac Catalyst a JWT Token.
AndroidiPhone/iPadIOS WidgetMac Catalyst Esta función no está disponible en el simulador.
Ejemplo
// Example used to retrieve a token to perform a request on Dropbox
OAuth2Params is OAuth2Parameters
OAuth2Params.ClientID = "01234567890123456789" 
OAuth2Params.ClientSecret = "98765432109876543210"
OAuth2Params.AuthURL = "https://www.dropbox.com/oauth2/authorize"
OAuth2Params.TokenURL = "https://api.dropboxapi.com/oauth2/token"
OAuth2Params.AdditionalParameters = "force_reapprove=false"
<COMPILE IF ConfigurationType<>SITE>
// If you are not using a website, you need to specify a localhost redirect URL
OAuth2Params.RedirectionURL = "http://localhost:9874/"
<END>

// Ask for authentication: opens the login window
MyToken is AuthToken = AuthIdentify(OAuth2Params)

// Request authenticated on a Dropbox API
req is httpRequest
req.Method = httpPost
req.URL = "https://api.dropboxapi.com/2/files/list_folder"
req.AuthToken = MyToken // Authentication token
req.ContentType = "application/json"
vAPIParam is Variant
vAPIParam.path = "/Homework/math"
vAPIParam.recursive = False
vAPIParam.include_media_info = False
vAPIParam.include_deleted = False
vAPIParam.include_has_explicit_shared_members = False
req.Content = VariantToJSON(vAPIParam)

HTTPresponse is httpResponse = HTTPSend(req)
let Data = JSONToVariant(HTTPresponse.Content)
// Use the incoming data...
Sintaxis
IOS WidgetMac Catalyst Esta sintaxis no está disponible para las aplicaciones en modo widget iOS o Catalyst

Autenticación mediante el protocolo OAuth 2.0 Ocultar los detalles

<Result> = AuthIdentify(<Authentication parameters>)
<Result>: Variable de tipo AuthToken
Variable de tipo AuthToken que corresponde al token que contiene la información de acceso para las siguientes solicitudes que requieran autenticación.
<Authentication parameters>: Variable de tipo OAuth2Parameters
Nombre de la variable de tipo OAuth2Parameters que contiene los parámetros que describen los elementos necesarios para obtener el token de acceso.

Autenticación mediante el protocolo OAuth 2.0 (sintaxis asíncrona) Ocultar los detalles

AuthIdentify(<Authentication parameters> , <WLanguage procedure>)
<Authentication parameters>: Variable de tipo OAuth2Parameters
Nombre de la variable de tipo OAuth2Parameters que contiene los parámetros que describen los elementos necesarios para obtener el token de acceso.
<WLanguage procedure>: Nombre del procedimiento
Nombre del procedimiento WLanguage ("callback") llamado durante la autenticación. Para obtener más información sobre este procedimiento, consulte Parámetros del procedimiento utilizado por la función AuthIdentify.
iPhone/iPad

Autenticación mediante el protocolo OpenID Ocultar los detalles

<Result> = AuthIdentify(<Authentication parameters>)
<Result>: Variable de tipo AuthToken
Variable de tipo AuthToken que corresponde al token que contiene la información de acceso para las siguientes solicitudes que requieran autenticación.
<Authentication parameters>: Variable de tipo OpenIDParameters
Nombre de la variable de tipo OpenIDParameters que contiene los parámetros que describen los elementos necesarios para obtener el token de acceso.
iPhone/iPadIOS WidgetMac Catalyst

Autenticación mediante el protocolo OpenID (sintaxis asíncrona) Ocultar los detalles

AuthIdentify(<Authentication parameters> , <WLanguage procedure>)
<Authentication parameters>: Variable de tipo OpenIDParameters
Nombre de la variable de tipo OpenIDParameters que contiene los parámetros que describen los elementos necesarios para obtener el token de acceso.
<WLanguage procedure>: Nombre del procedimiento
Nombre del procedimiento WLanguage ("callback") llamado durante la autenticación. Para obtener más información sobre este procedimiento, consulte Parámetros del procedimiento utilizado por la función AuthIdentify.
Novedad versión 2024
iPhone/iPadIOS WidgetMac Catalyst

Utilizar una autenticación JWT Ocultar los detalles

<Result> = AuthIdentify(<Authentication parameters>)
<Result>: Variable de tipo AuthToken
Variable de tipo AuthToken que corresponde al token que contiene la información de acceso para las siguientes solicitudes que requieran autenticación.
<Authentication parameters>: JWTParameters Variable
Nombre de la variable de tipo JWTParameters que contiene los parámetros que describen los elementos necesarios para obtener el token de acceso.
Novedad versión 2024
iPhone/iPadIOS WidgetMac Catalyst

Uso de una autenticación JWT (sintaxis as%EDncrona) Ocultar los detalles

AuthIdentify(<Authentication parameters> , <WLanguage procedure>)
<Authentication parameters>: JWTParameters Variable
Nombre de la variable de tipo JWTParameters que contiene los parámetros que describen los elementos necesarios para obtener el token de acceso.
<WLanguage procedure>: Nombre del procedimiento
Nombre del procedimiento WLanguage ("callback") llamado durante la autenticación. Para obtener más información sobre este procedimiento, consulte Parámetros del procedimiento utilizado por la función AuthIdentify.
Observaciones

Modo de funcionamiento de la autenticación OAuth 2.0

Las etapas de la autenticación OAuth 2.0 que realiza la función AuthIdentify son las siguientes:
  • Ejecución de una primera solicitud HTTP para pedir una autorización (URL de autorización especificada en la variable de tipo OAuth2Parameters).
  • Apertura de una ventana de autenticación OAuth 2.0. La ventana de autenticación la define cada servicio.
  • Tras la autenticación, el servidor devuelve un código de autorización para solicitar un token de acceso. Este código se añade en el parámetro de la segunda URL (URL del token de acceso especificado en la variable de tipo OAuth2Parameters).
  • Ejecución de la segunda solicitud HTTP para solicitar el token de acceso. El resultado es un buffer JSON que contiene, entre otros elementos, el token de acceso ("access_token") que se utilizará para las solicitudes que requieran autenticación. La variable de tipo AuthToken contiene la información que se encuentra en el buffer JSON. Este token de acceso será utilizado por las llamadas a las API del servicio web.
Para usar las API del servicio web, utilice la función HTTPSend con una variable de tipo httpRequest que define la solicitud a ejecutar.
La variable AuthToken se asignará a la propiedad AuthToken de la variable httpRequest (ver ejemplo).
En este caso, el servidor recibirá el encabezado HTTP "Authorization" con un valor en el siguiente formato: "Autorización: Bearer xxx_access_token_xxx".
Atención:
  • Si el servidor no devuelve el token de acceso en formato de código JSON según el estándar OAuth2.0, se producirá un error y no se obtendrá el token. La respuesta del servidor se puede obtener mediante la propiedad ServerResponse de la variable de tipo AuthToken.
  • Si el servidor no soporta el encabezado HTTP "Authorization" para transmitir el token de acceso, el desarrollador debe realizar la transmisión según el formato esperado por el servicio solicitado.
    El siguiente ejemplo permite utilizar el servicio Web de Facebook. En este caso, el token de acceso debe especificarse en la URL de la solicitud.
    • Android Ejemplo de código para Facebook
      // Example used to retrieve the name of the Facebook account
      MyToken is AuthToken
      MyTokenParam is OAuth2Parameters

      MyTokenParam.ClientID = "123456789012345"
      MyTokenParam.ClientSecret = "45g8jh5kll45579021qsg5444j"
      MyTokenParam.AuthURL = "https://www.facebook.com/dialog/oauth"
      MyTokenParam.TokenURL = "https://graph.facebook.com/v2.3/oauth/access_token"
      MyTokenParam.RedirectionURL = "http://localhost:9874/"
      MyTokenParam.Scope = "email"

      MyToken = AuthIdentify(MyTokenParam)
      IF MyToken <> Null THEN
      IF ErrorOccurred THEN
      Error(ErrorInfo())
      ELSE
      // Token specified on the request URL
      HTTPRequest("https://graph.facebook.com/me?access_token=" + MyToken.Value)
      vMyRes is Variant = JSONToVariant(HTTPGetResult(httpResult))
      // Retrieve the account name
      Trace(vMyRes.name)
      END
      END
    • iPhone/iPad Ejemplo de código para Facebook:
      MyToken is AuthToken
      MyTokenParam is OAuth2Parameters
      MyTokenParam.ClientID = "1705548803004741"
      MyTokenParam.ClientSecret = "7b3305a5aa1687ef04af001ec3388ecc"
      MyTokenParam.AuthURL = "https://www.facebook.com/dialog/oauth"
      MyTokenParam.TokenURL = "https://graph.facebook.com/oauth/access_token"
      MyTokenParam.RedirectionURL = "fb1705548803004741://authorize/"
      MyTokenParam.Scope = "email"

      MyToken = AuthIdentify(MyTokenParam)
      IF MyToken <> Null THEN
      IF ErrorOccurred THEN
      Error(ErrorInfo())
      ELSE
      // Token specified on the request URL
      HTTPRequest("https://graph.facebook.com/me?access_token=" + MyToken.Value)
      vMyRes is Variant = JSONToVariant(HTTPGetResult(httpResult))
      // Retrieve the account name
      Trace(vMyRes.name)
      END
      END

Modo de funcionamiento de la autenticación OpenID

La función AuthIdentify realiza las siguientes etapas de autenticación OpenID:
  • Ejecución de una primera solicitud HTTP para pedir una autorización (URL de autorización especificada en la variable de tipo OpenIDParameters).
  • Apertura de una ventana de autenticación OpenID. La ventana de autenticación la define cada servicio.
  • Ejecución de una segunda solicitud HTTP para obtener el token de acceso después de la autenticación. El resultado es un buffer JSON que contiene, entre otros elementos, el token de acceso ("access_token") que se utilizará para las solicitudes que requieran autenticación. La variable de tipo AuthToken contiene la información que se encuentra en el buffer JSON. Este token de acceso será utilizado por las llamadas a las API del servicio web.
Para autenticar al usuario, utilice la función OpenIDReadIdentity con la variable de tipo AuthToken.
Atención: Si el servidor no devuelve el token de acceso en formato de código JSON según el estándar OAuth2.0, se producirá un error y no se obtendrá el token. La respuesta del servidor se puede obtener mediante la propiedad ServerResponse de la variable de tipo AuthToken.
Android

Aplicación en segundo plano: Caso específico a partir de Android 10

A partir de Android 10, no se puede abrir una ventana si la aplicación está en segundo plano.
La función AuthIdentify puede abrir una ventana. Si se utiliza esta función cuando la aplicación está en segundo plano, se producirá un error fatal.
Consejos:
  • Para saber si la aplicación está en segundo plano, utilice la función InBackgroundMode.
  • Si una aplicación necesita interactuar con el usuario cuando está en segundo plano, se puede mostrar una notificación (con el tipo Notification). La aplicación volverá al primer plano cuando se haga clic en la notificación, si la propiedad ActivateApplication se establece en True. También es posible abrir una ventana desde el procedimiento pasado a la propiedad ActionClick.
Para obtener más información, consulte Android 10: Comportamiento de aplicaciones en segundo plano.
Clasificación Lógica de negocio / UI: Lógica de negocio
Componente: wd290ggl.dll
Versión mínima requerida
  • Versión 22
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 18/01/2024

Señalar un error o enviar una sugerencia | Ayuda local