Merge pull request #246 from stevenmaguire/migrate-linkedin

[1.0] Removing LinkedIn support and adding link in readme to new package
1.0
Phil Sturgeon 2015-03-21 14:04:49 -04:00
commit 5aea8991ba
3 changed files with 1 additions and 159 deletions

View File

@ -111,7 +111,6 @@ This package currently has built-in support for:
- Github - Github
- Google - Google
- Instagram - Instagram
- LinkedIn
These are as many OAuth 2 services as we plan to support officially. Maintaining a wide selection of providers These are as many OAuth 2 services as we plan to support officially. Maintaining a wide selection of providers
damages our ability to make this package the best it can be, especially as we progress towards v1.0. damages our ability to make this package the best it can be, especially as we progress towards v1.0.
@ -129,6 +128,7 @@ so please help them out with a pull request if you notice this.
- [Facebook](https://packagist.org/packages/league/oauth2-facebook) - [Facebook](https://packagist.org/packages/league/oauth2-facebook)
- [FreeAgent](https://github.com/CloudManaged/oauth2-freeagent) - [FreeAgent](https://github.com/CloudManaged/oauth2-freeagent)
- [Google Nest](https://github.com/JC5/nest-oauth2-provider) - [Google Nest](https://github.com/JC5/nest-oauth2-provider)
- [LinkedIn](https://github.com/thephpleague/oauth2-linkedin)
- [Mail.ru](https://packagist.org/packages/aego/oauth2-mailru) - [Mail.ru](https://packagist.org/packages/aego/oauth2-mailru)
- [Meetup](https://github.com/howlowck/meetup-oauth2-provider) - [Meetup](https://github.com/howlowck/meetup-oauth2-provider)
- [Microsoft](https://github.com/stevenmaguire/oauth2-microsoft) - [Microsoft](https://github.com/stevenmaguire/oauth2-microsoft)

View File

@ -1,74 +0,0 @@
<?php
namespace League\OAuth2\Client\Provider;
use League\OAuth2\Client\Entity\User;
use League\OAuth2\Client\Token\AccessToken;
class LinkedIn extends AbstractProvider
{
public $scopes = ['r_basicprofile r_emailaddress r_contactinfo'];
public $responseType = 'json';
public $authorizationHeader = 'Bearer';
public $fields = [
'id', 'email-address', 'first-name', 'last-name', 'headline',
'location', 'industry', 'picture-url', 'public-profile-url',
];
public function urlAuthorize()
{
return 'https://www.linkedin.com/uas/oauth2/authorization';
}
public function urlAccessToken()
{
return 'https://www.linkedin.com/uas/oauth2/accessToken';
}
public function urlUserDetails(AccessToken $token)
{
$fields = implode(',', $this->fields);
return 'https://api.linkedin.com/v1/people/~:(' . $fields . ')?format=json';
}
public function userDetails($response, AccessToken $token)
{
$user = new User();
$email = (isset($response->emailAddress)) ? $response->emailAddress : null;
$location = (isset($response->location->name)) ? $response->location->name : null;
$description = (isset($response->headline)) ? $response->headline : null;
$pictureUrl = (isset($response->pictureUrl)) ? $response->pictureUrl : null;
$user->exchangeArray([
'uid' => $response->id,
'name' => $response->firstName.' '.$response->lastName,
'firstname' => $response->firstName,
'lastname' => $response->lastName,
'email' => $email,
'location' => $location,
'description' => $description,
'imageurl' => $pictureUrl,
'urls' => $response->publicProfileUrl,
]);
return $user;
}
public function userUid($response, AccessToken $token)
{
return $response->id;
}
public function userEmail($response, AccessToken $token)
{
return isset($response->emailAddress) && $response->emailAddress
? $response->emailAddress
: null;
}
public function userScreenName($response, AccessToken $token)
{
return [$response->firstName, $response->lastName];
}
}

View File

@ -1,84 +0,0 @@
<?php
namespace League\OAuth2\Client\Test\Provider;
use Mockery as m;
class LinkedInTest extends ConcreteProviderTest
{
protected function setUp()
{
$this->provider = new \League\OAuth2\Client\Provider\LinkedIn([
'clientId' => 'mock_client_id',
'clientSecret' => 'mock_secret',
'redirectUri' => 'none',
]);
}
public function testAuthorizationUrl()
{
$url = $this->provider->getAuthorizationUrl();
$uri = parse_url($url);
parse_str($uri['query'], $query);
$this->assertArrayHasKey('client_id', $query);
$this->assertArrayHasKey('redirect_uri', $query);
$this->assertArrayHasKey('state', $query);
$this->assertArrayHasKey('scope', $query);
$this->assertArrayHasKey('response_type', $query);
$this->assertArrayHasKey('approval_prompt', $query);
$this->assertNotNull($this->provider->state);
}
public function testUrlAccessToken()
{
$url = $this->provider->urlAccessToken();
$uri = parse_url($url);
$this->assertEquals('/uas/oauth2/accessToken', $uri['path']);
}
public function testGetAccessToken()
{
$client = $this->createMockHttpClient();
$response = $this->createMockResponse('{"access_token": "mock_access_token", "expires": 3600, "refresh_token": "mock_refresh_token", "uid": 1}');
$client->shouldReceive('post')->times(1)->andReturn($response);
$this->provider->setHttpClient($client);
$token = $this->provider->getAccessToken('authorization_code', ['code' => 'mock_authorization_code']);
$this->assertEquals('mock_access_token', $token->accessToken);
$this->assertLessThanOrEqual(time() + 3600, $token->expires);
$this->assertGreaterThanOrEqual(time(), $token->expires);
$this->assertEquals('mock_refresh_token', $token->refreshToken);
$this->assertEquals('1', $token->uid);
}
public function testScopes()
{
$this->assertEquals(['r_basicprofile r_emailaddress r_contactinfo'], $this->provider->getScopes());
}
public function testUserData()
{
$client = $this->createMockHttpClient();
$postResponse = $this->createMockResponse('{"access_token": "mock_access_token", "expires": 3600, "refresh_token": "mock_refresh_token", "uid": 1}');
$getResponse = $this->createMockResponse('{"id": 12345, "firstName": "mock_first_name", "lastName": "mock_last_name", "emailAddress": "mock_email", "location": { "name": "mock_location" }, "headline": "mock_headline", "pictureUrl": "mock_picture_url", "publicProfileUrl": "mock_profile_url"}');
$client->shouldReceive('post')->times(1)->andReturn($postResponse);
$client->shouldReceive('get')->times(4)->andReturn($getResponse);
$this->provider->setHttpClient($client);
$token = $this->provider->getAccessToken('authorization_code', ['code' => 'mock_authorization_code']);
$user = $this->provider->getUserDetails($token);
$this->assertEquals(12345, $this->provider->getUserUid($token));
$this->assertEquals(['mock_first_name', 'mock_last_name'], $this->provider->getUserScreenName($token));
$this->assertEquals('mock_email', $this->provider->getUserEmail($token));
$this->assertEquals('mock_email', $user->email);
}
}