在PHP應用中簡化OAuth2.0身份驗證集成:OAuth 2.0 Client

jopen 10年前發布 | 56K 次閱讀 OpenID/單點登錄SSO OAuth 2.0 Client

這個包能夠讓你以很簡單的方式在在PHP應用中集成OAuth2.0身份驗證。
用法

驗證代碼流程

$provider = new League\OAuth2\Client\Provider\<ProviderName>(array(
    'clientId'  =>  'XXXXXXXX',
    'clientSecret'  =>  'XXXXXXXX',
    'redirectUri'   =>  'https://your-registered-redirect-uri/',
    'scopes' => array('email', '...', '...'),
));

if ( ! isset($_GET['code'])) {

// If we don't have an authorization code then get one
header('Location: '.$provider->getAuthorizationUrl());
exit;

} else {

// Try to get an access token (using the authorization code grant)
$token = $provider->getAccessToken('authorization_code', [
    'code' => $_GET['code']
]);

// If you are using Eventbrite you will need to add the grant_type parameter (see below)
$token = $provider->getAccessToken('authorization_code', [
    'code' => $_GET['code'],
    'grant_type' => 'authorization_code'
]);

// Optional: Now you have a token you can look up a users profile data
try {

    // We got an access token, let's now get the user's details
    $userDetails = $provider->getUserDetails($token);

    // Use these details to create a new profile
    printf('Hello %s!', $userDetails->firstName);

} catch (Exception $e) {

    // Failed to get user details
    exit('Oh dear...');
}

// Use this to interact with an API on the users behalf
echo $token->accessToken;

// Use this to get a new access token if the old one expires
echo $token->refreshToken;

// Number of seconds until the access token will expire, and need refreshing
echo $token->expires;

}</pre>

Refreshing a Token

$provider = new League\OAuth2\Client\Provider\<ProviderName>(array(
    'clientId'  =>  'XXXXXXXX',
    'clientSecret'  =>  'XXXXXXXX',
    'redirectUri'   =>  'https://your-registered-redirect-uri/'
));

$grant = new \League\OAuth2\Client\Grant\RefreshToken(); $token = $provider->getAccessToken($grant, ['refresh_token' => $refreshToken]);</pre>

Built-In Providers

這個包目前已經內置了支持:

  • Eventbrite
  • 非死book
  • Github
  • Google
  • Instagram
  • LinkedIn
  • Microsoft

項目主頁:http://www.baiduhome.net/lib/view/home/1417502997514

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!