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.

72 lines
2.3 KiB

<?php
namespace app\base\logic\mptoutiao;
use app\base\model\mptoutiao\MpToutiaoUser;
use app\base\model\user\UserInfo;
use think\App;
use think\facade\Db;
class Auth extends Base
{
/**
* 抖音小程序 授权登录
* @param string $code login 接口返回的登录凭证
* @param string $anonymous_code login 接口返回的匿名登录凭证
* @date 2022-10-19
*/
public function getOpenid($code, $anonymous_code)
{
$platform_param = get_mp_toutiao_config();
$mp_toutiao_user_model = new MpToutiaoUser();
$jwt_class = new \jwt\Jwt();
$user_class = new \toutiao\mptoutiao\login\User($platform_param);
// 获取抖音小程序用户信息
$result = $user_class->getOpenid($code, $anonymous_code);
// 有错误
if ($result['err_no'] != 0) {
return sendErrorArray($result['err_no'], $result['err_tips']);
}
// 更新抖音小程序用户信息表
$data = [
'uid' => $this->mid,
'openid' => isset($result['data']['openid']) ? $result['data']['openid'] : '',
'anonymous_openid' => isset($result['data']['anonymous_openid']) ? $result['data']['anonymous_openid'] : '',
'unionid' => isset($result['data']['unionid']) ? $result['data']['unionid'] : '',
'session_key' => isset($result['data']['session_key']) ? $result['data']['session_key'] : '',
'session_key_time' => time()
];
$res = $mp_toutiao_user_model->updateUser($data);
if (!$res) {
return sendErrorArray(3001, '更新用户信息失败');
}
// 获取用户信息
$mp_toutiao_user = $mp_toutiao_user_model->getOneData([
['openid', '=', $data['openid']]
], 'id,user_id,openid');
// 获取token
$info = [
'uid' => $this->mid,
'openid' => $mp_toutiao_user['openid'],
'user_id' => empty($mp_toutiao_user['user_id']) ? '' : $mp_toutiao_user['user_id'],
'mp_toutiao_user_id' => $mp_toutiao_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 sendSuccessArray($r_data);
}
}