aerwen_u_api/app/api/controller/Wechat/Wechat.php
2024-05-02 21:50:52 +08:00

55 lines
1.5 KiB
PHP

<?php
namespace app\api\controller\Wechat;
use think\Request;
use app\BaseController;
use app\common\wechat\OfficialAccount;
use think\facade\Db;
class Wechat extends BaseController
{
public function getAccess(Request $request)
{
cookie('wechat_refer_url', $request->param('refer_url'), 5 * 60);
$redirectUrl = OfficialAccount::getInstance()
->getOAuth()
->scopes(['snsapi_userinfo'])
->redirect(config('wechat.redirect_url'));
return redirect($redirectUrl);
}
public function callback(Request $request)
{
$params = $request->param();
$user = OfficialAccount::getInstance()
->getOAuth()
->userFromCode($params['code']);
$targetUrl = empty(cookie('wechat_refer_url')) ? '/' : cookie('wechat_refer_url');
$ip = request()->ip();
$forwarded = request()->header("x-forwarded-for");
if ($forwarded) {
$ip = explode(',', $forwarded)[0];
}
$userInfo = [
'wechat_history_openid' => $user->getId(),
'wechat_history_ip' => $ip,
'wechat_history_useragent' => $request->header('user-agent'),
'wechat_history_nickname' => $user->getNickname(),
'wechat_history_avatar' => $user->getAvatar(),
'wechat_history_refer' => $targetUrl,
'create_time' => date('Y-m-d H:i:s'),
];
Db::name('wechat_history')->insert($userInfo);
return redirect($targetUrl);
}
}