src/AppBundle/Component/OAuthClient/QqOAuthClient.php
(开头部分) 2KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
<?php
namespace AppBundle\Component\OAuthClient;
class QqOAuthClient extends AbstractOAuthClient
{
const USERINFO_URL = 'https://graph.qq.com/user/get_user_info';
const AUTHORIZE_URL = 'https://graph.qq.com/oauth2.0/authorize?';
const OAUTH_TOKEN_URL = 'https://graph.qq.com/oauth2.0/token';
const OAUTH_ME_URL = 'https://graph.qq.com/oauth2.0/me';
public function getAuthorizeUrl($callbackUrl)
{
$params = array();
$params['client_id'] = $this->config['key'];
$params['response_type'] = 'code';
$params['redirect_uri'] = $callbackUrl;
$params['status'] = 'pro';
return self::AUTHORIZE_URL.http_build_query($params);
}
public function getAccessToken($code, $callbackUrl)
{
$params = array(
'grant_type' => 'authorization_code',
'client_id' => $this->config['key'],
'redirect_uri' => $callbackUrl,
'client_secret' => $this->config['secret'],
'code' => $code,
);
$result = $this->getRequest(self::OAUTH_TOKEN_URL, $params);
$rawToken = array();
parse_str($result, $rawToken);
$userInfo = $this->getUserInfo($rawToken);
return array(
'userId' => $userInfo['id'],
'expiredTime' => $rawToken['expires_in'],
'access_token' => $rawToken['access_token'],
'token' => $rawToken['access_token'],
);
}
public function getUserInfo($token)
{
$params = array('access_token' => $token['access_token']);
$result = $this->getRequest(self::OAUTH_ME_URL, $params);
if (false !== strpos($result, 'callback')) {
$lpos = strpos($result, '(');
$rpos = strrpos($result, ')');
$result = substr($result, $lpos + 1, $rpos - $lpos - 1);
}
$user = json_decode($result);
$token['id'] = $user->openid;
$params = array(
'oauth_consumer_key' => isset($token['key']) ? $token['key'] : $this->config['key'], // 因为移动端第三方登录会走此接口,移动端的key和网站的key是不一样的
'openid' => $token['id'],
'format' => 'json',
'access_token' => $token['access_token'],
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。