55 lines
1.5 KiB
PHP
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);
|
|
}
|
|
}
|