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
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);
|
|
}
|
|
|
|
}
|