PHP版QQ互联OAuth示例代码分享
(编辑:jimmy 日期: 2025/11/10 浏览:3 次 )
由于国内QQ用户的普遍性,所以现在各大网站都尽可能的提供QQ登陆口,下面我们来看看php版,给大家参考下
/**
* QQ互联 oauth
* @author dyllen
*
*/
class Oauth
{
//取Authorization Code Url
const PC_CODE_URL = 'https://graph.qq.com/oauth2.0/authorize';
//取Access Token Url
const PC_ACCESS_TOKEN_URL = 'https://graph.qq.com/oauth2.0/token';
//取用户 Open Id Url
const OPEN_ID_URL = 'https://graph.qq.com/oauth2.0/me';
//用户授权之后的回调地址
public $redirectUri = null;
// App Id
public $appid = null;
//App Key
public $appKey = null;
//授权列表
//字符串,多个用逗号隔开
public $scope = null;
//授权code
public $code = null;
//续期access token的凭证
public $refreshToken = null;
//access token
public $accessToken = null;
//access token 有效期,单位秒
public $expiresIn = null;
//state
public $state = null;
public $openid = null;
//construct
public function __construct($config=[])
{
foreach($config as $key => $value) {
$this->$key = $value;
}
}
/**
* 得到获取Code的url
* @throws \InvalidArgumentException
* @return string
*/
public function codeUrl()
{
if (!$this->redirectUri) {
throw new \Exception('parameter $redirectUri must be set.');
}
$query = [
'response_type' => 'code',
'client_id' => $this->appid,
'redirect_uri' => $this->redirectUri,
'state' => $this->getState(),
'scope' => $this->scope,
];
return self::PC_CODE_URL . '"{"));
$subError = strstr($subError, "}", true) . "}";
$error = json_decode($subError, true);
throw new \Exception($error['error_description'], (int)$error['error']);
}
/**
* 从获取openid接口的返回数据中解析出openid
* @param string $str
* @return string
*/
protected function parseOpenid($str)
{
$subStr = substr($str, strpos($str, "{"));
$subStr = strstr($subStr, "}", true) . "}";
$strArr = json_decode($subStr, true);
if(!isset($strArr['openid'])) {
$this->thrwoError($str);
}
return $strArr['openid'];
}
}
以上所述就是本文的全部内容了,希望大家能够喜欢。
下一篇:PHP 获取ip地址代码汇总