diff --git a/README.md b/README.md index 1117cb3..1189563 100644 --- a/README.md +++ b/README.md @@ -114,7 +114,6 @@ $token = $provider->getAccessToken($grant, ['refresh_token' => $refreshToken]); This package currently has built-in support for: - Eventbrite -- Facebook - Github - Google - Instagram @@ -139,6 +138,7 @@ so please help them out with a pull request if you notice this. - [Yandex](https://packagist.org/packages/aego/oauth2-yandex) - [Vkontakte](https://packagist.org/packages/j4k/oauth2-vkontakte) - [Naver](https://packagist.org/packages/deminoth/oauth2-naver) +- [Facebook](https://packagist.org/packages/league/oauth2-facebook) ### Implementing your own provider diff --git a/src/Provider/Facebook.php b/src/Provider/Facebook.php deleted file mode 100644 index d4d73b9..0000000 --- a/src/Provider/Facebook.php +++ /dev/null @@ -1,74 +0,0 @@ -getHttpClient(); - $url = 'https://graph.facebook.com/me/picture?type=normal&access_token=' . $token->accessToken; - $request = $client->get($url); - - $info = $request->getInfo(); - $imageUrl = $info['url']; - - $user = new User(); - - $username = (isset($response->username)) ? $response->username : null; - $email = (isset($response->email)) ? $response->email : null; - $location = (isset($response->hometown->name)) ? $response->hometown->name : null; - $description = (isset($response->bio)) ? $response->bio : null; - $imageUrl = ($imageUrl) ?: null; - - $user->exchangeArray([ - 'uid' => $response->id, - 'nickname' => $username, - 'name' => $response->name, - 'firstname' => $response->first_name, - 'lastname' => $response->last_name, - 'email' => $email, - 'location' => $location, - 'description' => $description, - 'imageurl' => $imageUrl, - 'urls' => [ 'Facebook' => $response->link ], - ]); - - return $user; - } - - public function userUid($response, \League\OAuth2\Client\Token\AccessToken $token) - { - return $response->id; - } - - public function userEmail($response, \League\OAuth2\Client\Token\AccessToken $token) - { - return isset($response->email) && $response->email ? $response->email : null; - } - - public function userScreenName($response, \League\OAuth2\Client\Token\AccessToken $token) - { - return [$response->first_name, $response->last_name]; - } -} diff --git a/test/src/Provider/FacebookTest.php b/test/src/Provider/FacebookTest.php deleted file mode 100644 index 5904a46..0000000 --- a/test/src/Provider/FacebookTest.php +++ /dev/null @@ -1,97 +0,0 @@ -provider = new \League\OAuth2\Client\Provider\Facebook([ - 'clientId' => 'mock_client_id', - 'clientSecret' => 'mock_secret', - 'redirectUri' => 'none', - ]); - } - - public function tearDown() - { - m::close(); - parent::tearDown(); - } - - 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('/oauth/access_token', $uri['path']); - } - - public function testGetAccessToken() - { - $response = m::mock('GuzzleHttp\Message\Response'); - $response->shouldReceive('getBody')->times(1)->andReturn('access_token=mock_access_token&expires=3600&refresh_token=mock_refresh_token&uid=1'); - - $client = m::mock('GuzzleHttp\Client'); - $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(['offline_access', 'email', 'read_stream'], $this->provider->getScopes()); - } - - public function testUserData() - { - $postResponse = m::mock('GuzzleHttp\Message\Response'); - $postResponse->shouldReceive('getBody')->times(1)->andReturn('access_token=mock_access_token&expires=3600&refresh_token=mock_refresh_token&uid=1'); - - $getResponse = m::mock('GuzzleHttp\Message\Response'); - $getResponse->shouldReceive('getBody')->andReturn('{"id": 12345, "name": "mock_name", "username": "mock_username", "first_name": "mock_first_name", "last_name": "mock_last_name", "email": "mock_email", "Location": "mock_home", "bio": "mock_description", "link": "mock_facebook_url"}'); - $getResponse->shouldReceive('getInfo')->andReturn(['url' => 'mock_image_url']); - - $client = m::mock('GuzzleHttp\Client'); - $client->shouldReceive('post')->times(1)->andReturn($postResponse); - $client->shouldReceive('get')->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); - } -}