Package Data | |
---|---|
Maintainer Username: | overtrue |
Maintainer Contact: | anzhengchao@gmail.com (overtrue) |
Package Create Date: | 2015-11-30 |
Package Last Update: | 2024-11-11 |
Home Page: | |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-12-22 03:09:34 |
Package Statistics | |
---|---|
Total Downloads: | 4,052,465 |
Monthly Downloads: | 67,097 |
Daily Downloads: | 1,998 |
Total Stars: | 1,312 |
Total Watchers: | 38 |
Total Forks: | 242 |
Total Open Issues: | 5 |
PHP >= 7.0
$ composer require "overtrue/socialite" -vvv
For Laravel 5: overtrue/laravel-socialite
authorize.php
:
<?php
use Overtrue\Socialite\SocialiteManager;
$config = [
'github' => [
'client_id' => 'your-app-id',
'client_secret' => 'your-app-secret',
'redirect' => 'http://localhost/socialite/callback.php',
],
];
$socialite = new SocialiteManager($config);
$response = $socialite->driver('github')->redirect();
echo $response;// or $response->send();
callback.php
:
<?php
use Overtrue\Socialite\SocialiteManager;
$config = [
'github' => [
'client_id' => 'your-app-id',
'client_secret' => 'your-app-secret',
'redirect' => 'http://localhost/socialite/callback.php',
],
];
$socialite = new SocialiteManager($config);
$user = $socialite->driver('github')->user();
$user->getId(); // 1472352
$user->getNickname(); // "overtrue"
$user->getUsername(); // "overtrue"
$user->getName(); // "安正超"
$user->getEmail(); // "anzhengchao@gmail.com"
$user->getProviderName(); // GitHub
...
Now we support the following sites:
facebook
, github
, google
, linkedin
, outlook
, weibo
, taobao
, qq
, wechat
, douyin
, and douban
.
Each drive uses the same configuration keys: client_id
, client_secret
, redirect
.
Example:
...
'weibo' => [
'client_id' => 'your-app-id',
'client_secret' => 'your-app-secret',
'redirect' => 'http://localhost/socialite/callback.php',
],
...
Before redirecting the user, you may also set "scopes" on the request using the scope method. This method will overwrite all existing scopes:
$response = $socialite->driver('github')
->scopes(['scope1', 'scope2'])->redirect();
You may also want to dynamic set redirect
,you can use the following methods to change the redirect
URL:
$socialite->redirect($url);
// or
$socialite->withRedirectUrl($url)->redirect();
// or
$socialite->setRedirectUrl($url)->redirect();
WeChat scopes:
snsapi_base
, snsapi_userinfo
- Used to Media Platform Authentication.snsapi_login
- Used to web Authentication.To include any optional parameters in the request, call the with method with an associative array:
$response = $socialite->driver('google')
->with(['hd' => 'example.com'])->redirect();
$user = $socialite->driver('weibo')->user();
{
"id": 1472352,
"nickname": "overtrue",
"name": "安正超",
"email": "anzhengchao@gmail.com",
"avatar": "https://avatars.githubusercontent.com/u/1472352?v=3",
"original": {
"login": "overtrue",
"id": 1472352,
"avatar_url": "https://avatars.githubusercontent.com/u/1472352?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/overtrue",
"html_url": "https://github.com/overtrue",
...
},
"token": {
"access_token": "5b1dc56d64fffbd052359f032716cc4e0a1cb9a0",
"token_type": "bearer",
"scope": "user:email"
}
}
You can fetch the user attribute as a array key like this:
$user['id']; // 1472352
$user['nickname']; // "overtrue"
$user['name']; // "安正超"
$user['email']; // "anzhengchao@gmail.com"
...
Or using method:
$user->getId();
$user->getNickname();
$user->getName();
$user->getEmail();
$user->getAvatar();
$user->getOriginal();
$user->getToken();// or $user->getAccessToken()
$user->getProviderName(); // GitHub/Google/Facebook...
The $user->getOriginal()
method will return an array of the API raw response.
You can get the access token instance of current session by call $user->getToken()
or $user->getAccessToken()
or $user['token']
.
$accessToken = new AccessToken(['access_token' => $accessToken]);
$user = $socialite->user($accessToken);
You can set the request with your custom Request
instance which instanceof Symfony\Component\HttpFoundation\Request
before you call driver
method.
$request = new Request(); // or use AnotherCustomRequest.
$socialite = new SocialiteManager($config, $request);
Or set request to SocialiteManager
instance:
$socialite->setRequest($request);
You can get the request from SocialiteManager
instance by getRequest()
:
$request = $socialite->getRequest();
By default, the SocialiteManager
use Symfony\Component\HttpFoundation\Session\Session
instance as session manager, you can change it as following lines:
$session = new YourCustomSessionManager();
$socialite->getRequest()->setSession($session);
Your custom session manager must be implement the
Symfony\Component\HttpFoundation\Session\SessionInterface
.
Enjoy it! :heart:
想知道如何从零开始构建 PHP 扩展包?
请关注我的实战课程,我会在此课程中分享一些扩展开发经验 —— 《PHP 扩展包实战教程 - 从入门到发布》
MIT