The state does not match. You may be a victim of CSRF.
解决方案,一共两个域名,用www.tpshop.com去访问:
具体实现如下:
1.SDK配置: 把压缩包放在public下
2.https://www.tpshop.com/plugins/qq
3.点击设置配置项
4.根据提示,删除该文件,删除完,刷新页面
5.填写:
APP ID :101542020
APP Key :539cd4f7784f107fa74ad58d87b5c916
回调地址:http://www.tpshop.com/index.php/home/login/qqcallback
6.配置完毕,查看实列,写对应方法,写之前改一下login.html
7.代码如下:
Route::get('login','login/qqcallback');
控制器:
/**
* 回调地址
*/
public function qqcallback(){
require_once('./plugins/qq/API/qqConnectAPI.php');
$qc = new \QC();
# 获取access_token
$access_token = $qc->qq_callback();
# 获取openid
$openid = $qc->get_openid();
$qc = new \QC($access_token,$openid);
# 获取到用户信息
$user_info = $qc->get_user_info();
# 添加入库
User::createUser($user_info,$openid);
# 跳转到首页
return redirect('/');
}
business/User.php
/**
* qq信息添加入库
*/
public static function createUser($user_info,$open_id){
# 判断库里是否有唯一的open_id
$is_user_info = \app\common\model\User::where('openid',$open_id)->find();
if ($is_user_info) {
session('user',$is_user_info['nickname']);
} else {
# 新添加数据
$user_info = \app\common\model\User::create([
'username' => '',
'nickname' => $user_info['nickname'],
'phone' => 0,
'password' => encrypt_password(123456),
'figure_url' => $user_info['figureurl'],
'email' => '',
'open_type' => 'qq',
'openid' => $open_id,
]);
session('user',$user_info['nickname']);
}
return true;
}