|
先说一下(我是新手,不喜勿喷,码字也不容易)
之前对QQ登录的接口一无所知,只要下载了别的整合好的东西就可以直接用!
但是像我这样的新手直接用别人整合好的东西都感觉用起来好吃力,然后好了一周的时间去摸索,之前我在网上找的不管是QQ的SDK还是别人集成的类库都是加载第3方类库的东西,通过我一段时间的摸索和对比,其实并不需要加载类库,完全是多余的! 我不太懂QQ互联是一个什么流程但是,但是我知道只需要在网站上加一个链接就可以跳转到QQ互联的页面,然后通过官方的API接口传入参数就可以获取返回的信息,个人感觉类库什么的都是多余的,还不如自己去拼装靠谱!一下就是直接上代码:
----------------------------------------------------------------
这个是跳转到QQ互联页面的链接
(说明一点,里面的 client_di 是QQ的appid,redirect_uri其实就是QQ的回调地址,这些东西都是通过自己去申请获得,如果要上线就需要审核,当然可以申请一个测试用,我现在的就是测试的)
https://graph.qq.com/oauth/show?which=Login&display=pc&response_type=code&client_id=101280234&redirect_uri=http://www.zhoujianjun.cn/login/qq_sign_in_code
登录以后会自动跳转到回调地址也就是上面说的redirect_uri,跳转到回调地址以后就需要做处理(先获取code参数),然后传到我附上的代码里面
(说明一下,这些都是我整合好的,可以直接拿到用户的基本信息和openid,我只是把里面基础数据拿出来了而已)
/*
* 通过token拿到用户的固定open_id
*/
function get_open_id($code)
{
//拿到用户的access_token
$ret = file_get_contents("https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=101280234&client_secret=68ee3753a25469e902fcb8a25ae878de&redirect_uri=http://www.zhoujianjun.cn/login/qq_sign_in_code&code=".$code);
$token = array();
parse_str($ret, $token);
//通过token拿到用户的open_id
$str = file_get_contents("https://graph.qq.com/oauth2.0/me?access_token=".$token['access_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);
$user_info = file_get_contents("https://graph.qq.com/user/get_user_info?access_token=".$token['access_token']."&oauth_consumer_key=101280234&openid=".$user['openid']);
$info = json_decode($user_info, TRUE);
$data = array();
$data['open_id'] = $user['openid'];
$data['nickname'] = $info['nickname'];
$data['headimg'] = $info['figureurl_qq_2'];
$data['sex'] = $info['gender'];
$data['age'] = date('Y',time()) - $info['year'];
return $data;
}
|
|