You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.6 KiB
90 lines
2.6 KiB
<?php
|
|
|
|
namespace app\base\controller\wechat\api;
|
|
|
|
use app\base\model\wechat\WechatUser;
|
|
use EasyWeChat\Factory;
|
|
use think\App;
|
|
|
|
class Auth extends Base
|
|
{
|
|
|
|
/**
|
|
* Auth2.0 发起授权页
|
|
* @param string $url 授权后重定向的回调链接地址
|
|
* @date 2020-08-18
|
|
*/
|
|
public function oauth()
|
|
{
|
|
$url = input('post.url');
|
|
$weixin_param = get_weixin_config();
|
|
$auth_class = new \tencent\wechat\weixin\Auth($weixin_param);
|
|
|
|
//获取跳转链接
|
|
$redirect_url = $auth_class->getRedirectUrl($url);
|
|
|
|
//记录三方日志
|
|
platformLog(['url' => $url], $redirect_url, 'wechat_oauth_get_redirect_url_' . UID);
|
|
|
|
return sendSuccessMessage([
|
|
'redirect_url' => $redirect_url
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Auth2.0 接收用户授权后的状态,并获取用户信息
|
|
* @param string $code 授权码
|
|
* @date 2020-08-18
|
|
*/
|
|
public function user()
|
|
{
|
|
$code = input('post.code');
|
|
$weixin_param = get_weixin_config();
|
|
|
|
$wechat_user_model = new WechatUser();
|
|
$jwt_class = new \jwt\Jwt();
|
|
$auth_class = new \tencent\wechat\weixin\Auth($weixin_param);
|
|
|
|
$result = $auth_class->getUserInfoByCode($code);
|
|
$result->getTokenResponse();
|
|
$wechat_data = $result->getRaw();
|
|
platformLog(['code' => $code], $wechat_data, 'wechat_oauth_get_user_' . UID);
|
|
|
|
// 更新微信用户信息
|
|
$user_wechat_data = [
|
|
'uid' => UID,
|
|
'openid' => $wechat_data['openid'],
|
|
'nickname' => $wechat_data['nickname'],
|
|
'headimgurl' => $wechat_data['headimgurl'],
|
|
'sex' => $wechat_data['sex'],
|
|
'province' => $wechat_data['province'],
|
|
'city' => $wechat_data['city'],
|
|
'country' => $wechat_data['country'],
|
|
'language' => $wechat_data['language'],
|
|
'unionid' => isset($wechat_data['unionid']) ? $wechat_data['unionid'] : ''
|
|
];
|
|
$res = $wechat_user_model->updateUser($user_wechat_data);
|
|
|
|
//获取用户信息
|
|
$wechat_user = $wechat_user_model->getOneData([
|
|
['openid', '=', $user_wechat_data['openid']]
|
|
], 'id,user_id,openid');
|
|
|
|
$info = [
|
|
'uid' => UID,
|
|
'openid' => $wechat_user['openid'],
|
|
'wechat_user_id' => $wechat_user['id'],
|
|
'user_id' => $wechat_user['user_id'],
|
|
];
|
|
$res_token = $jwt_class->signToken($info);
|
|
|
|
$r_data = $info;
|
|
$r_data['access_token'] = $res_token['token'];
|
|
$r_data['access_token_expire_time'] = $res_token['exp'];
|
|
|
|
return sendSuccessMessage($r_data);
|
|
}
|
|
|
|
|
|
}
|