removing microsoft and adding link in readme

1.0
Steven Maguire 2015-03-21 12:01:53 -05:00
parent f8133b9e4c
commit cb78014762
3 changed files with 1 additions and 161 deletions

View File

@ -112,7 +112,6 @@ This package currently has built-in support for:
- Google - Google
- Instagram - Instagram
- LinkedIn - LinkedIn
- Microsoft
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.
@ -132,6 +131,7 @@ so please help them out with a pull request if you notice this.
- [Google Nest](https://github.com/JC5/nest-oauth2-provider) - [Google Nest](https://github.com/JC5/nest-oauth2-provider)
- [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)
- [Naver](https://packagist.org/packages/deminoth/oauth2-naver) - [Naver](https://packagist.org/packages/deminoth/oauth2-naver)
- [Odnoklassniki](https://packagist.org/packages/aego/oauth2-odnoklassniki) - [Odnoklassniki](https://packagist.org/packages/aego/oauth2-odnoklassniki)
- [Square](https://packagist.org/packages/wheniwork/oauth2-square) - [Square](https://packagist.org/packages/wheniwork/oauth2-square)

View File

@ -1,67 +0,0 @@
<?php
namespace League\OAuth2\Client\Provider;
use League\OAuth2\Client\Entity\User;
use League\OAuth2\Client\Token\AccessToken;
class Microsoft extends AbstractProvider
{
public $scopes = ['wl.basic', 'wl.emails'];
public $responseType = 'json';
public function urlAuthorize()
{
return 'https://login.live.com/oauth20_authorize.srf';
}
public function urlAccessToken()
{
return 'https://login.live.com/oauth20_token.srf';
}
public function urlUserDetails(AccessToken $token)
{
return 'https://apis.live.net/v5.0/me?access_token='.$token;
}
public function userDetails($response, AccessToken $token)
{
$client = $this->getHttpClient();
$httpResponse = $client->get('https://apis.live.net/v5.0/'.$response->id.'/picture');
$imageUrl = $httpResponse->getHeader('location');
$user = new User();
$email = (isset($response->emails->preferred)) ? $response->emails->preferred : null;
$user->exchangeArray([
'uid' => $response->id,
'name' => $response->name,
'firstname' => $response->first_name,
'lastname' => $response->last_name,
'email' => $email,
'imageurl' => $imageUrl,
'urls' => $response->link.'/cid-'.$response->id,
]);
return $user;
}
public function userUid($response, AccessToken $token)
{
return $response->id;
}
public function userEmail($response, AccessToken $token)
{
return isset($response->emails->preferred) && $response->emails->preferred
? $response->emails->preferred
: null;
}
public function userScreenName($response, AccessToken $token)
{
return [$response->first_name, $response->last_name];
}
}

View File

@ -1,93 +0,0 @@
<?php
namespace League\OAuth2\Client\Test\Provider;
use Mockery as m;
class MicrosoftTest extends ConcreteProviderTest
{
protected function setUp()
{
$this->provider = new \League\OAuth2\Client\Provider\Microsoft([
'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 testUrlAuthorize()
{
$url = $this->provider->urlAuthorize();
$uri = parse_url($url);
$this->assertEquals('/oauth20_authorize.srf', $uri['path']);
}
public function testUrlAccessToken()
{
$url = $this->provider->urlAccessToken();
$uri = parse_url($url);
$this->assertEquals('/oauth20_token.srf', $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']);
# print_r($token);die();
$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(['wl.basic', 'wl.emails'], $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, "name": "mock_name", "first_name": "mock_first_name", "last_name": "mock_last_name", "emails": {"preferred": "mock_email"}, "link": "mock_link"}');
$getResponse->shouldReceive('getHeader')->with('location')->andReturn('mock_image_url');
$client->shouldReceive('post')->times(1)->andReturn($postResponse);
$client->shouldReceive('get')->times(5)->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);
$this->assertEquals('mock_image_url', $user->imageUrl);
}
}