Hola! quiero compartir con la comunidad el resultado de varios días de idas y venidas investigando y pidiendo ayuda por todos lados para lograr iniciar sesión en una aplicación de APEX usando el inicio de sesión de LinkedIn. Y el Team de APEX me ayudó con este problema, muchas gracias!

Primero te pongo en contexto, para aprender y revisar la configuración que se usa una aplicación en APEX para el inicio de sesión usando las redes sociales, descargué la aplicación del webinar realizado el 7 de Marzo por Office Hours – Apex Social Login.

Instalé la aplicación en mi instancia de APEX en la nube y empecé a estudiarla. Después de ver el webinar, me puse a crear el proyecto para el caso de Google, la aplicación para el caso de Facebook y me tocaba crear la aplicación para LinkedIn.

Una vez creada, tenia estos permisos en mi aplicación: r_emailaddress, r_liteprofile y w_member_social.

Actualicé las Credenciales Web, para que usara las que correspondían a mis aplicaciones.

En el caso de LinkedIn, se muestra así:

Al tener las credenciales actualizadas, pasé a actualizar el esquema de autenticación de la aplicación:

Sin tocar las URLs que tenia la aplicación, eso sí cambié el scope porque yo no tenía r_fullprofile en mi app de LinkedIn y luego ejecuté la aplicación para probar los inicios de sesión de Facebook, Google y LinkedIn. Para el caso de Google y Facebook no tuve problemas para autenticarme, pero para LinkedIn me salía este error:

Revisé el debug y parecía tener que ver con la URL User Info Endpoint URL el cual podría estar incorrecta…

JSON GET https://api.linkedin.com/v1/people/~:(id,formattedName,location,emailAddress)?format=json request got HTTP status 410
{
  "errorCode": 0,
  "message": "This resource is no longer available under v1 APIs",
  "requestId": "5Z3G3TR1D2",
  "status": 410,
  "timestamp": 1571088643236
}

Busque en la API de LinkedIn, pero la verdad no sabía como armar la URL apropiadamente.

Pedí ayuda al Team de APEX por medio de Mónica Godoy, ella me sugirió después de que no pudimos encontrar solución que colocara mi duda en el foro de APEX, así que así lo hice 🙂

Y hoy me encuentro con la respuesta de Christian el cual al probar lo que me sugirió pude iniciar sesión en la app de APEX usando LinkedIn. Yuju!!!!

Aquí esta el hilo del foro: https://community.oracle.com/message/15476089#15476089

SOLUCIÓN

En el esquema de autenticación de LinkedIn, colocar lo siguiente:

Y si necesitamos usar atributos adicionales nos recomienda usar  APEX_WEB_SERVICE para llamar a https://api.linkedin.com/v2/me  en post-authentication.

Y nos comparte el procedimiento, como sigue:

procedure post_auth is 
  c clob; 
begin 
  c := apex_web_service.make_rest_request ( 
    p_url => 'https://api.linkedin.com/v2/me', 
    p_http_method => 'GET', 
    p_credential_static_id => 'Linkedin' ); 
apex_debug.info('profile: %s', c); 
apex_json.parse(c); 

:G_USER_INFO := 'Authenticated via LinkedIn. '||chr(10)|| 
                'ID: '||apex_json.get_varchar2('id')||chr(10)|| 
                'localizedLastName: '||apex_json.get_varchar2('localizedLastName')||chr(10)|| 
                'localizedFirstName: '||apex_json.get_varchar2('localizedFirstName'); 
end post_auth;

Algo importante que decir, es que el identificador estático tiene que ser el mismo que tenemos en nuestra credencial web.

p_credential_static_id => ‘Linkedin’

De ese modo ya podemos iniciar sesión con la aplicación de APEX usando LinkedIn 🙂

Muchas Gracias Team de APEX! Especialmente a Christian y Mónica!