diff options
author | Marc Alexander <admin@m-a-styles.de> | 2013-09-27 10:47:10 +0200 |
---|---|---|
committer | Marc Alexander <admin@m-a-styles.de> | 2013-09-27 10:47:10 +0200 |
commit | 663b4b2eb74e8edb076c962662ff5124e94353ea (patch) | |
tree | 0ff449c776397b2b66fc7d567f93bbb7d62ea2e3 /phpBB/phpbb/auth/provider/oauth/service/facebook.php | |
parent | 01512104b5823d15eed64d362b41b9594f870f0c (diff) | |
parent | 8db820be634cfce0fdb079fdbaee2c49661a7870 (diff) | |
download | forums-663b4b2eb74e8edb076c962662ff5124e94353ea.tar forums-663b4b2eb74e8edb076c962662ff5124e94353ea.tar.gz forums-663b4b2eb74e8edb076c962662ff5124e94353ea.tar.bz2 forums-663b4b2eb74e8edb076c962662ff5124e94353ea.tar.xz forums-663b4b2eb74e8edb076c962662ff5124e94353ea.zip |
Merge branch 'develop' of https://github.com/phpbb/phpbb3 into feature/passwords
Conflicts:
phpBB/develop/create_schema_files.php
Diffstat (limited to 'phpBB/phpbb/auth/provider/oauth/service/facebook.php')
-rw-r--r-- | phpBB/phpbb/auth/provider/oauth/service/facebook.php | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/phpBB/phpbb/auth/provider/oauth/service/facebook.php b/phpBB/phpbb/auth/provider/oauth/service/facebook.php new file mode 100644 index 0000000000..4a4eeba6d5 --- /dev/null +++ b/phpBB/phpbb/auth/provider/oauth/service/facebook.php @@ -0,0 +1,100 @@ +<?php +/** +* +* @package auth +* @copyright (c) 2013 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ + +namespace phpbb\auth\provider\oauth\service; + +/** +* @ignore +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +/** +* Facebook OAuth service +* +* @package auth +*/ +class facebook extends base +{ + /** + * phpBB config + * + * @var phpbb\config\config + */ + protected $config; + + /** + * phpBB request + * + * @var phpbb\request\request_interface + */ + protected $request; + + /** + * Constructor + * + * @param phpbb\config\config $config + * @param phpbb\request\request_interface $request + */ + public function __construct(\phpbb\config\config $config, \phpbb\request\request_interface $request) + { + $this->config = $config; + $this->request = $request; + } + + /** + * {@inheritdoc} + */ + public function get_service_credentials() + { + return array( + 'key' => $this->config['auth_oauth_facebook_key'], + 'secret' => $this->config['auth_oauth_facebook_secret'], + ); + } + + /** + * {@inheritdoc} + */ + public function perform_auth_login() + { + if (!($this->service_provider instanceof \OAuth\OAuth2\Service\Facebook)) + { + throw new exception('AUTH_PROVIDER_OAUTH_ERROR_INVALID_SERVICE_TYPE'); + } + + // This was a callback request, get the token + $this->service_provider->requestAccessToken($this->request->variable('code', '')); + + // Send a request with it + $result = json_decode($this->service_provider->request('/me'), true); + + // Return the unique identifier + return $result['id']; + } + + /** + * {@inheritdoc} + */ + public function perform_token_auth() + { + if (!($this->service_provider instanceof \OAuth\OAuth2\Service\Facebook)) + { + throw new exception('AUTH_PROVIDER_OAUTH_ERROR_INVALID_SERVICE_TYPE'); + } + + // Send a request with it + $result = json_decode($this->service_provider->request('/me'), true); + + // Return the unique identifier + return $result['id']; + } +} |