php QQ第三方登录/OAuth2.0验证
2017-06-13 09:18
561 查看
qq实现第三方网站登录
2.创建网站
注意内容:网站地址一定要加入图中所标注的信息
view plain
copy
public function actionQQ()
{
//$redirect 为回调地址 $app_id 应用编号
$url = 'https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=' . $app_id . '&redirect_uri=' . $redirect;
header('Location:' . $url);
}
获取QQ用户信息
[php]
view plain
copy
<?php
class QQ_sdk
{
private $app_id = '101****0572';
private $app_secret = 'e55264******132366';
private $redirect = 'http://www.***.cn/';
function __construct()
{
}
/**
* [get_open_id 获取用户唯一ID,openid]
* @param [string] $token [授权码]
* @return [array] [成功返回client_id 和 openid ;失败返回error 和 error_msg]
*/
function get_open_id($token)
{
$str = $this->curl_get_content('https://graph.qq.com/oauth2.0/me?access_token=' . $token);
if (strpos($str, "callback") !== false) {
$lpos = strpos($str, "(");
$rpos = strrpos($str, ")");
$str = substr($str, $lpos + 1, $rpos - $lpos - 1);
}
$user = json_decode($str, TRUE);
return $user;
}
/**
* [get_access_token 获取access_token]
* @param [string] $code [登陆后返回的$_GET['code']]
* @return [array] [expires_in 为有效时间 , access_token 为授权码 ; 失败返回 error , error_description ]
*/
function get_access_token($code)
{
$token_url = 'https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&'
. 'client_id=' . $this->app_id . '&redirect_uri=' . urlencode($this->redirect) . '&client_secret=' . $this->app_secret . '&code=' . $code;
$token = array();
parse_str($this->curl_get_content($token_url), $token);
return $token;
}
/**
* [get_user_info 获取用户信息]
* @param [string] $token [授权码]
* @param [string] $open_id [用户唯一ID]
* @return [array] [ret:返回码,为0时成功。msg为错误信息,正确返回时为空。...params]
*/
function get_user_info($token, $open_id)
{
$user_info_url = 'https://graph.qq.com/user/get_user_info?' . 'access_token=' . $token . '&oauth_consumer_key=' . $this->app_id . '&openid=' . $open_id . '&format=json';
$info = json_decode($this->curl_get_content($user_info_url), TRUE);
return $info;
}
private function curl_get_content($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_URL, $url);
//设置超时时间为3s
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
}
view plain
copy
if(isset($_GET['code'])) {
//qq获取信息
include('QQ_sdk.php');
$qq_sdk = new Qq_sdk();
$token = $qq_sdk->get_access_token($_GET['code']);
echo "<pre>";
print_r($token)."</br>";
echo "</pre>";
$open_id = $qq_sdk->get_open_id($token['access_token']);
echo "<pre>";
print_r($open_id)."</br>";
echo "</pre>";
}
?>
创建QQ互联账号
可用QQ号码登录 登录地址:http://connect.qq.com/QQ互联->管理中心->创建应用
1.创建应用2.创建网站
注意内容:网站地址一定要加入图中所标注的信息
创建成功
获取 APP ID 和 APP KEYheader请求
[php]view plain
copy
public function actionQQ()
{
//$redirect 为回调地址 $app_id 应用编号
$url = 'https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=' . $app_id . '&redirect_uri=' . $redirect;
header('Location:' . $url);
}
获取QQ用户信息
[php]
view plain
copy
<?php
class QQ_sdk
{
private $app_id = '101****0572';
private $app_secret = 'e55264******132366';
private $redirect = 'http://www.***.cn/';
function __construct()
{
}
/**
* [get_open_id 获取用户唯一ID,openid]
* @param [string] $token [授权码]
* @return [array] [成功返回client_id 和 openid ;失败返回error 和 error_msg]
*/
function get_open_id($token)
{
$str = $this->curl_get_content('https://graph.qq.com/oauth2.0/me?access_token=' . $token);
if (strpos($str, "callback") !== false) {
$lpos = strpos($str, "(");
$rpos = strrpos($str, ")");
$str = substr($str, $lpos + 1, $rpos - $lpos - 1);
}
$user = json_decode($str, TRUE);
return $user;
}
/**
* [get_access_token 获取access_token]
* @param [string] $code [登陆后返回的$_GET['code']]
* @return [array] [expires_in 为有效时间 , access_token 为授权码 ; 失败返回 error , error_description ]
*/
function get_access_token($code)
{
$token_url = 'https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&'
. 'client_id=' . $this->app_id . '&redirect_uri=' . urlencode($this->redirect) . '&client_secret=' . $this->app_secret . '&code=' . $code;
$token = array();
parse_str($this->curl_get_content($token_url), $token);
return $token;
}
/**
* [get_user_info 获取用户信息]
* @param [string] $token [授权码]
* @param [string] $open_id [用户唯一ID]
* @return [array] [ret:返回码,为0时成功。msg为错误信息,正确返回时为空。...params]
*/
function get_user_info($token, $open_id)
{
$user_info_url = 'https://graph.qq.com/user/get_user_info?' . 'access_token=' . $token . '&oauth_consumer_key=' . $this->app_id . '&openid=' . $open_id . '&format=json';
$info = json_decode($this->curl_get_content($user_info_url), TRUE);
return $info;
}
private function curl_get_content($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_URL, $url);
//设置超时时间为3s
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
}
可在设置<meta property="qc:admins" content="756420************1316367" />目录下测试
[php]view plain
copy
if(isset($_GET['code'])) {
//qq获取信息
include('QQ_sdk.php');
$qq_sdk = new Qq_sdk();
$token = $qq_sdk->get_access_token($_GET['code']);
echo "<pre>";
print_r($token)."</br>";
echo "</pre>";
$open_id = $qq_sdk->get_open_id($token['access_token']);
echo "<pre>";
print_r($open_id)."</br>";
echo "</pre>";
}
?>
获取用户信息
相关文章推荐
- php QQ第三方登录/OAuth2.0验证
- php QQ第三方登录/OAuth2.0验证
- php 新浪微博第三方登录验证/OAuth2.0
- php 新浪微博第三方登录验证/OAuth2.0
- PHP 接入(第三方登录)QQ 登录 OAuth2.0 过程中遇到的坑
- 浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
- 第三方登录之QQ登录(二)——OAuth2.0处理流程介绍(以QQ登录为例)
- php调用QQ登录(第三方登录)
- PHP第三方登录—OAuth2.0协议
- [转]第三方登录之QQ登录(二)——OAuth2.0处理流程介绍(以QQ登录为例)
- php中关于qq第三方登录
- php 实现qq第三方登录
- EvaOAuth : 基于php/ZF2支持OAuth1.0与OAuth2.0的第三方Oauth登录统一接口模块
- 第三方登录之QQ登录(二)——OAuth2.0处理流程介绍(以QQ登录为例)
- [置顶] 第三方登录之QQ登录——OAuth2.0处理流程介绍(以QQ登录为例)
- 使用OAuth2.0协议的github、QQ、weibo第三方登录接入总结
- 淘宝账号基于OAuth2.0的登录验证授权登陆第三方网站
- 第三方登录之QQ登录(二)——OAuth2.0处理流程介绍(以QQ登录为例)
- 实现QQ第三方登录教程(php)
- php第三方登录 Oauth2.0协议