Familiar title? Disclaimer, this blog is 100% inspired by Anton Nielsens's amazing blog here
http://c2anton.blogspot.com/2019/09/what-info-is-available-from-my-apex.html
I thought I could jazz up the results a bit in a table format (well slightly more formatted).
How it works: Depending on the scopes you ask for, your Social Sign-In Provider gives you a wad of JSON following authentication. You have one shot at reading the details... in your post_authentication procedure.
In my variant of Anton's work, we have to
Create an application item A_SOCIAL_INFO
Create a Dynamic Content region on Page 1 with PL/SQL Function Body returning a CLOB of the below code
RETURN :A_SOCIAL_INFO;
Edit your Social Sign-In authentication scheme
Add post_authentication as your Post-Authentication Procedure Name
post_authentication
Edit your Social Sign-In authentication scheme and add the following PL/SQL
procedure post_authentication is
l_index varchar2(32767);
l_kind number;
l_value varchar2(32767);
begin
l_index := apex_json.g_values.first;
:A_SOCIAL_INFO :=
'<table class="t-Report-report">
<thead>
<tr>
<th class="t-Report-colHead">Name</th>
<th class="t-Report-colHead">Data Type</th>
<th class="t-Report-colHead align="left">Value</th>
</tr>
</thead>
<tbody>';
for i in 1..(apex_json.g_values.count) loop
l_kind := apex_json.g_values(l_index).kind;
if l_kind = 4 then
l_value := apex_json.g_values(l_index).number_value;
elsif l_kind = 5 then
l_value := apex_json.g_values(l_index).varchar2_value;
else
l_value := null;
end if;
:A_SOCIAL_INFO :=
:A_SOCIAL_INFO ||
'<tr>' ||
'<td class="t-Report-cell" align="left">' || l_index || '</td>' ||
'<td class="t-Report-cell" align="left">' || CASE l_kind WHEN 4 THEN 'Number' WHEN 5 THEN 'Varchar2' ELSE TO_CHAR(l_kind) END || '</td>' ||
'<td class="t-Report-cell" align="left">' || l_value || '</td>' ||
'</tr>';
l_index := apex_json.g_values.next(l_index);
end loop;
:A_SOCIAL_INFO :=
:A_SOCIAL_INFO ||
' </tbody>
</table>';
exception
when others then
:A_SOCIAL_INFO :=
:A_SOCIAL_INFO || ' err: ' ||sqlerrm;
end;
ENJOY!