<?php
require dirname(__DIR__) . '/common.php';
use Yurun\Util\YurunHttp;
$GLOBALS['oauth_qq'] = array(
'appid' => '',
'appkey' => '',
'callbackUrl' => 'http://test.com/test/QQ/callback.php',
'loginAgentUrl' => '',
);
YurunHttp::setDefaultHandler('Yurun\Util\YurunHttp\Handler\Swoole');
$server = new swoole_http_server('0.0.0.0', 80);
$server->on('request', function ($request, $response) {
switch($request->server['request_uri'])
{
case '/login':
login($request, $response);
break;
case '/callback':
callback($request, $response);
break;
default:
$response->end('404');
break;
}
});
$server->start();
function login($request, $response)
{
$qqOAuth = new \Yurun\OAuthLogin\QQ\OAuth2($GLOBALS['oauth_qq']['appid'], $GLOBALS['oauth_qq']['appkey'], $GLOBALS['oauth_qq']['callbackUrl']);
$url = $qqOAuth->getAuthUrl(
);
file_put_contents(__DIR__ . '/state.txt', $qqOAuth->state);
return $response->redirect($url);
}
function callback($request, $response)
{
$qqOAuth = new \Yurun\OAuthLogin\QQ\OAuth2($GLOBALS['oauth_qq']['appid'], $GLOBALS['oauth_qq']['appkey'], $GLOBALS['oauth_qq']['callbackUrl']);
$state = file_get_contents(__DIR__ . '/state.txt');
echo 'state:', $state, PHP_EOL;
$response->end(json_encode([
'access_token:' => $qqOAuth->getAccessToken($state, $request->get['code'], $request->get['state']),
'我也是access_token:' => $qqOAuth->accessToken,
'请求返回:' => $qqOAuth->result,
'用户资料:' => $qqOAuth->getUserInfo(),
'openid:' => $qqOAuth->openid
]));
}