1、先注册成为开发者,并实名认证。https://connect.qq.com

2、创建应用。​​https://connect.qq.com/manage.html#/appcreate/web​​(回调域名一般是自己的主域名)

3、应用审核成功后,获取appid appkey

4、下载QQ登录的php SDK。​​http://wiki.connect.qq.com/sdk%E4%B8%8B%E8%BD%BD​

5、将下载的文件解压后放到WEB目录下,访问install/index.php文件。然后只保留API文件夹的内容 ,其余全部删掉。将API重命名为qqlogin放入到vendor目录。(install步骤会自动更改配置,如果未生效,则手动修改qqlogin\comm\inc.php)

{"appid":"*****","appkey":"******","callback":"http://www.****.com/index.php?r=member/qqcallback","scope":"get_user_info,add_share,list_album,add_album,upload_pic,add_topic,add_one_blog,add_weibo,check_page_fans,add_t,add_pic_t,del_t,get_repost_list,get_info,get_other_info,get_fanslist,get_idolist,add_idol,del_idol,get_tenpay_addr","errorReport":true,"storageType":"file","host":"localhost","user":"root","password":"root","database":"test"}

6、U//serController控制器配置

//进入QQ登录界面
public function actionQqlogin(){
require_once("../vendor/qqlogin/qqConnectAPI.php");
$qc = new \QC();
$qc->qq_login();
}

//执行qq_login方法后,获取用户信息后的回调地址中的操作
public function actionQqcallback(){
require_once("../vendor/qqlogin/qqConnectAPI.php");
$auth = new \OAuth();
$accessToken = $auth->qq_callback();
$openid = $auth->get_openid();
$qc = new \QC($accessToken, $openid);
$userinfo = $qc->get_user_info();
$session = Yii::$app->session;
$session['userinfo']= $userinfo;
$session['openid']=$openid;
//如果openid存在,则把账号信息写入session
if(User::find()->where('openid=:openid',[':openid'=>$openid])->one()){
$session['loginname']=$userinfo['nickname'];
$session['isLogin']=1;
return $this->redirect(['index/index']);
}
//如果openid不存在,则绑定账号信息
return $this->redirect(['member/qqreg']);
//var_dump($userinfo);
}
public function actionQqreg(){
$this->layout='layout2';
$model = new User;
if(Yii::$app->request->isPost){
$post = Yii::$app->request->post();
$session=Yii::$app->session;
$post['User']['openid']=Yii::$app->session['openid'];
//var_dump($post);
if($model->reg($post, 'qqreg')){
$session['loginname']=$session['userinfo']['nickname'];
$session['isLogin']=1;
return $this->redirect(['index/index']);
}
//var_dump($model->getErrors());
}
return $this->render('qqreg',['model'=>$model]);
}