Open source social sign on PHP. Connect your application(s) with social network(s).
See example.
If I didn't see your issue, PR please ping me direct by Telegram!
- OAuth1 spec RFC 5849
- OAuth2 spec RFC 6749
- OpenID v1 (1.1) (WIP!) spec
- OpenID v2 spec
- OpenID Connect (1.0) spec
- JWT (JSON Web Token) spec RFC 7519
- JWK (JSON Web Keys) spec RFC 7517
- PayPal (WIP!)
- Steam
- 500px
- Tumblr
- Amazon
- Vk (ВКонтакте)
- GitHub
- GitLab
- Slack
- BitBucket
- Twitch
- Vimeo
- DigitalOcean
- Yandex
- MailRu
- Odnoklassniki
- Discord
- Google (you can use Google from
OAuth2
orOpenIDConnect
)
The recommended way to install socialconnect/auth
is via Composer.
- If you do not have composer installed, download the
composer.phar
executable or use the installer.
$ curl -sS https://getcomposer.org/installer | php
- Run
php composer.phar require socialconnect/auth
or add a new requirement in your composer.json.
{
"require": {
"socialconnect/auth": "^1.1.0"
}
}
- Run
php composer.phar update
- OrgHeiglHybridAuth from @heiglandreas - Authentication-Layer for your ZendFramework3 App.
- Phalcon-module-skeleton from @ovr - There is a module for Phalcon inside project.
Composer:
composer install
First you need to setup SocialConnect\Auth\Service
:
$httpClient = new \SocialConnect\Common\Http\Client\Curl();
/**
* By default We are using Curl class from SocialConnect/Common
* but you can use Guzzle wrapper ^5.3|^6.0
*/
//$httpClient = new \SocialConnect\Common\Http\Client\Guzzle(
// new \GuzzleHttp\Client()
//);
/**
* Why We need Cache decorator for HTTP Client?
* Providers like OpenID & OpenIDConnect require US
* to request OpenID specification (and JWK(s) for OpenIDConnect)
*
* It's not a best practise to request it every time, because it's unneeded round trip to the server
* if you are using OpenID or OpenIDConnect we suggest you to use cache
*
* If you don`t use providers like (Steam) from OpenID or OpenIDConnect
* you may skip this because it's not needed
*/
$httpClient = new \SocialConnect\Common\Http\Client\Cache(
$httpClient,
/**
* Please dont use FilesystemCache for production/stage env, only for local testing!
* It doesnot support cache expire (remove)
*/
new \Doctrine\Common\Cache\FilesystemCache(
__DIR__ . '/cache'
)
);
$service = new \SocialConnect\Auth\Service(
$httpClient,
new \SocialConnect\Provider\Session\Session(),
$configureProviders
);
$configuration = [
'redirectUri' => 'http://sconnect.local/auth/cb',
'provider' => [
'facebook' => [
'applicationId' => '',
'applicationSecret' => '',
'scope' => [
'email'
]
],
]
];
/**
* By default collection factory is null, in this case Auth\Service will create
* a new instance of \SocialConnect\Auth\CollectionFactory
* you can use custom or register another providers by CollectionFactory instance
*/
$collectionFactory = null;
$service = new \SocialConnect\Auth\Service(
$httpClient,
new \SocialConnect\Provider\Session\Session(),
$configureProviders,
$collectionFactory
);
Next create you loginAction:
$providerName = 'facebook';
$provider = $service->getProvider($providerName);
header('Location: ' . $provider->makeAuthUrl());
And implement callback handler:
$providerName = 'facebook';
$provider = $service->getProvider($providerName);
$accessToken = $provider->getAccessTokenByRequestParameters($_GET);
var_dump($accessToken);
$user = $provider->getIdentity($accessToken);
var_dump($user);
This project is open-sourced software licensed under the MIT License.
See the LICENSE file for more information.