. namespace core\oauth2\client; use core\oauth2\client; /** * Class linkedin - Custom client handler to fetch data from linkedin * * Custom oauth2 client for linkedin as it doesn't support OIDC and has a different way to get * key information for users - firstname, lastname, email. * * @copyright 2021 Peter Dias * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @package core */ class linkedin extends client { /** * Override to handle LinkedIn's non-spec-compliant 'locale' field, which isn't a string (e.g. 'en-US') but an object. * * @return array|false */ public function get_userinfo() { $rawuserinfo = $this->get_raw_userinfo(); if ($rawuserinfo === false) { return false; } if (!empty($rawuserinfo->locale) && is_object($rawuserinfo->locale)) { if (!empty($rawuserinfo->locale->language) && !empty($rawuserinfo->locale->country)) { $rawuserinfo->locale = "{$rawuserinfo->locale->language}-{$rawuserinfo->locale->country}"; } else { unset($rawuserinfo->locale); } } return $this->map_userinfo_to_fields($rawuserinfo); } }