* @link http://github.com/Nodge/yii2-eauth/ * @license http://www.opensource.org/licenses/bsd-license.php */ namespace common\components\nodge\eauth\src\services; use nodge\eauth\oauth1\Service; /** * LinkedIn provider class. * * @package application.extensions.eauth.services */ class LinkedinOAuth1Service extends Service { protected $name = 'linkedin'; protected $title = 'LinkedIn'; protected $type = 'OAuth1'; protected $jsArguments = ['popup' => ['width' => 900, 'height' => 550]]; protected $providerOptions = [ 'request' => 'https://api.linkedin.com/uas/oauth/requestToken', 'authorize' => 'https://www.linkedin.com/uas/oauth/authenticate', // https://www.linkedin.com/uas/oauth/authorize 'access' => 'https://api.linkedin.com/uas/oauth/accessToken', ]; protected $baseApiUrl = 'http://api.linkedin.com/v1/'; protected function fetchAttributes() { $info = $this->makeSignedRequest('people/~:(id,first-name,last-name,public-profile-url)', [ 'query' => [ 'format' => 'json', ], ]); $this->attributes['id'] = $info['id']; $this->attributes['name'] = $info['firstName'] . ' ' . $info['lastName']; $this->attributes['url'] = $info['publicProfileUrl']; return true; } /** * Returns the error array. * * @param array $response * @return array the error array with 2 keys: code and message. Should be null if no errors. */ protected function fetchResponseError($response) { if (isset($response['error-code'])) { return [ 'code' => $response['error-code'], 'message' => $response['message'], ]; } else if (isset($response['errorCode'])) { return [ 'code' => $response['errorCode'], 'message' => $response['message'], ]; } return null; } }