QQ互联三方登录
1、官方下载SDK包(PHP)
2、以ThinkCMF 5.0 为例,将文件命名为qqAuth(自己任意起)上传到 simplewind 文件夹中的 extend 文件夹中
3、安装SDK包
4.删除除API外其它的一切包,然后将API中的文件移动到 qqAuth 文件夹中
5.// QQ 登录
public function qqLogin(){
// 引入QQ互联第三方sdk类库
import('qqAuth.qqConnectAPI',EXTEND_PATH);
$qc = new \QC();
$qc->qq_login();
exit;
}
6. // 回调
public function qqGoback(){
// 引入QQ互联第三方sdk类库
import('qqAuth.qqConnectAPI',EXTEND_PATH);
$qc = new \QC();
$access_token = $qc->qq_callback(); // 获取access_token
$open_id = $qc->get_openid();
// 判断用户是否存在
$is_user = Db::name('user')
->where(['open_id'=>$open_id])
->find();
if($is_user){
session('user',[
'u_id'=>$is_user['id'],
'nickname'=>$is_user['user_nickname'],
'leval'=>$is_user['leval']
]);
}else{
$qc = new \QC($access_token,$open_id);
$user_info = $qc->get_user_info();
if($user_info && is_array($user_info)){
$data['open_id'] = $open_id;
$data['login_type'] = 3;
$data['user_nickname'] = $user_info['nickname'];
$data['avatar'] = $user_info['figureurl_qq_2'];
$data['create_time'] = time();
$result = Db::name('user')
->insertGetId($data);
if(is_numeric($result)){
session('user', [
'u_id'=>$result,
'nickname'=>$user_info['nickname'],
'leval'=>0
]);
}
}
}
$this->redirect('portalCircle/index');
}
注意事项:如果报“Unable to find the wrapper "https"错误的解决办法”错误。
PHP.ini默认配置下,用file_get_contents读取https的链接,就会如下错误:
Warning: fopen() [function.fopen]: Unable to find the wrapper "https" - did you forget to enable it when you configured PHP?
这个错误分3种解决方案:
1.windows下的PHP,只需要到php.ini中把extension=php_openssl.dll前面的;删掉,重启服务就可以了。
2.linux下的PHP,就必须安装openssl模块,安装好了以后就可以访问了。
3.如果服务器你不能修改配置的话,那么就使用curl函数来替代file_get_contents函数,当然不是简单的替换啊。还有相应的参数配置才能正常使用curl函数。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
