用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2098|回复: 4
收起左侧

[初级] 网站集合QQ登录和百度账号登陆(一些了解)

[复制链接]
发表于 2016-1-19 10:24:34 | 显示全部楼层 |阅读模式

    先说一下(我是新手,不喜勿喷,码字也不容易)


    之前对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;
}
 楼主| 发表于 2016-1-19 10:28:27 | 显示全部楼层
这个可以直接拿着用,我把下面的业务逻辑放在了service里面,至于你们喜欢放哪里都可以
发表于 2016-4-11 11:58:52 | 显示全部楼层
您好,请问一下具体怎么把你的那些内容放到我自己的CI框架里面,新人不懂,求指教,拜托拜托

本版积分规则