更新openid
This commit is contained in:
parent
21a53abd93
commit
b0ad73fe2b
@ -8,7 +8,7 @@ use support\Request;
|
|||||||
|
|
||||||
class StudentController extends BaseController
|
class StudentController extends BaseController
|
||||||
{
|
{
|
||||||
protected $noNeedLogin = ['login'];
|
protected $noNeedLogin = ['login', 'getCode'];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @desc 登录
|
* @desc 登录
|
||||||
@ -22,6 +22,20 @@ class StudentController extends BaseController
|
|||||||
return $this->json($res);
|
return $this->json($res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc 获取code
|
||||||
|
* @param Request $request
|
||||||
|
* @return \support\Response
|
||||||
|
*/
|
||||||
|
public function getCode(Request $request)
|
||||||
|
{
|
||||||
|
$appid = getenv('WECHAT_APPID');
|
||||||
|
$redirect_uri = urlencode(getenv('SERVER_DOMAIN') . "/h5/teacher#/pages/index/index");//重定向地址
|
||||||
|
|
||||||
|
$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect";
|
||||||
|
return redirect($url);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @desc 学生信息
|
* @desc 学生信息
|
||||||
* @param Request $request
|
* @param Request $request
|
||||||
@ -34,4 +48,10 @@ class StudentController extends BaseController
|
|||||||
return $this->json($res);
|
return $this->json($res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function updateOpenid(Request $request)
|
||||||
|
{
|
||||||
|
$service = new StudentService();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -9,7 +9,7 @@ use support\Request;
|
|||||||
class TeacherController extends BaseController
|
class TeacherController extends BaseController
|
||||||
{
|
{
|
||||||
|
|
||||||
protected $noNeedLogin = ['login'];
|
protected $noNeedLogin = ['login', 'getCode'];
|
||||||
|
|
||||||
public function login(Request $request)
|
public function login(Request $request)
|
||||||
{
|
{
|
||||||
@ -19,6 +19,20 @@ class TeacherController extends BaseController
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc 获取code
|
||||||
|
* @param Request $request
|
||||||
|
* @return \support\Response
|
||||||
|
*/
|
||||||
|
public function getCode(Request $request)
|
||||||
|
{
|
||||||
|
$appid = getenv('WECHAT_APPID');
|
||||||
|
$redirect_uri = urlencode(getenv('SERVER_DOMAIN') . "/h5/teacher#/pages/login/login");//重定向地址
|
||||||
|
|
||||||
|
$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect";
|
||||||
|
return redirect($url);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @desc 设置时区
|
* @desc 设置时区
|
||||||
* @param Request $request
|
* @param Request $request
|
||||||
@ -43,5 +57,13 @@ class TeacherController extends BaseController
|
|||||||
return $this->json($res);
|
return $this->json($res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function updateOpenid(Request $request)
|
||||||
|
{
|
||||||
|
$service = new TeacherService();
|
||||||
|
$res = $service->updateOpenid($request);
|
||||||
|
return $this->json($res);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -4,22 +4,69 @@ namespace app\api\controller;
|
|||||||
|
|
||||||
use app\BaseController;
|
use app\BaseController;
|
||||||
use app\constant\ResponseCode;
|
use app\constant\ResponseCode;
|
||||||
|
use GuzzleHttp\Client;
|
||||||
use support\Request;
|
use support\Request;
|
||||||
|
use think\Exception;
|
||||||
|
|
||||||
class WechatSubscriptController extends BaseController
|
class WechatSubscriptController extends BaseController
|
||||||
{
|
{
|
||||||
protected $noNeedLogin = ['*'];
|
protected $noNeedLogin = ['*'];
|
||||||
|
|
||||||
|
const GENERAL_ACCESS_TOKEN = 'general_access_token';
|
||||||
|
const CODE_ACCESS_TOKEN = 'code_access_token';
|
||||||
|
const BASE_URI = 'https://api.weixin.qq.com';
|
||||||
|
|
||||||
public function getCode(Request $request)
|
public function getCode(Request $request)
|
||||||
{
|
{
|
||||||
$appid = getenv('WECHAT_APPID');
|
$appid = getenv('WECHAT_APPID');
|
||||||
$redirect_uri = urlencode(getenv('SERVER_DOMAIN') . "/index.html#/pages/login/login ");//重定向地址
|
if($request->all('client') == 'student'){
|
||||||
|
$redirect_uri = urlencode(getenv('SERVER_DOMAIN') . "/h5/student#/pages/login/login");//重定向地址
|
||||||
|
}else{
|
||||||
|
$redirect_uri = urlencode(getenv('SERVER_DOMAIN') . "/h5/teacher#/pages/login/login");//重定向地址
|
||||||
|
}
|
||||||
|
|
||||||
$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect";
|
$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect";
|
||||||
return $this->json([
|
return redirect($url);
|
||||||
'code' => ResponseCode::SUCCESS,
|
}
|
||||||
'data' => $url
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc 获取网页授权code的access_token
|
||||||
|
* @param $code
|
||||||
|
* @return array|void
|
||||||
|
* @throws \GuzzleHttp\Exception\GuzzleException
|
||||||
|
*/
|
||||||
|
public static function getCodeAccessToken($code)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$client = new Client(['base_uri'=>self::BASE_URI]);
|
||||||
|
$response = $client->request('get', 'sns/oauth2/access_token', [
|
||||||
|
'query' => [
|
||||||
|
'appid' => getenv('APPID'),
|
||||||
|
'secret' => getenv('APPSECRET'),
|
||||||
|
'code'=>$code,
|
||||||
|
'grant_type'=>'authorization_code'
|
||||||
|
]
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
$response_contents = $response->getBody()->getContents();
|
||||||
|
raw_log('wechat/code_access_token', ['result' => $response_contents]);
|
||||||
|
if ($response->getStatusCode() == 200) {
|
||||||
|
$result = json_decode($response_contents, true);
|
||||||
|
raw_log('wechat/code_access_token', ['result' => $result]);
|
||||||
|
if (isset($result['errcode'])) {
|
||||||
|
throw new Exception($result['errmsg']);
|
||||||
|
}
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}catch (Exception $e){
|
||||||
|
return [
|
||||||
|
'code'=>ResponseCode::FAIL,
|
||||||
|
'msg'=>$e->getMessage()
|
||||||
|
];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace app\common\service;
|
namespace app\common\service;
|
||||||
|
|
||||||
|
use app\api\controller\WechatSubscriptController;
|
||||||
use app\common\model\Student;
|
use app\common\model\Student;
|
||||||
use app\constant\ResponseCode;
|
use app\constant\ResponseCode;
|
||||||
use think\Exception;
|
use think\Exception;
|
||||||
@ -79,4 +80,45 @@ class StudentService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc 更新code
|
||||||
|
* @param $request
|
||||||
|
* @return array|void
|
||||||
|
* @throws \GuzzleHttp\Exception\GuzzleException
|
||||||
|
*/
|
||||||
|
public function updateOpenid($request)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
if(empty($request->teacher)){
|
||||||
|
throw new Exception('请先教师登陆');
|
||||||
|
}
|
||||||
|
$teacher = Student::where(['id' => $request->teacher->id])->findOrEmpty();
|
||||||
|
if($teacher->isEmpty()){
|
||||||
|
throw new Exception('未找到教师信息');
|
||||||
|
}
|
||||||
|
|
||||||
|
$data = $request->post('code');
|
||||||
|
$user_info = WechatSubscriptController::getCodeAccessToken($data['code']);
|
||||||
|
if (isset($result['code'])) {
|
||||||
|
$message = '获取信息失败';
|
||||||
|
}
|
||||||
|
$openid = $user_info['openid'];
|
||||||
|
$teacher = Student::where(['id'=>$request->teacher->id])->findOrEmpty();
|
||||||
|
$teacher->save([
|
||||||
|
'openid' => $openid,
|
||||||
|
]);
|
||||||
|
|
||||||
|
return [
|
||||||
|
'code' => ResponseCode::SUCCESS,
|
||||||
|
'msg' => 'success'
|
||||||
|
];
|
||||||
|
}catch (Exception $e){
|
||||||
|
return [
|
||||||
|
'code' => ResponseCode::FAIL,
|
||||||
|
'msg' => $e->getMessage()
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace app\common\service;
|
namespace app\common\service;
|
||||||
|
|
||||||
|
use app\api\controller\WechatSubscriptController;
|
||||||
use app\common\model\Teacher;
|
use app\common\model\Teacher;
|
||||||
use app\common\model\TimeZone;
|
use app\common\model\TimeZone;
|
||||||
use app\constant\ResponseCode;
|
use app\constant\ResponseCode;
|
||||||
@ -115,4 +116,44 @@ class TeacherService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc 更新code
|
||||||
|
* @param $request
|
||||||
|
* @return array|void
|
||||||
|
* @throws \GuzzleHttp\Exception\GuzzleException
|
||||||
|
*/
|
||||||
|
public function updateOpenid($request)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
if(empty($request->teacher)){
|
||||||
|
throw new Exception('请先教师登陆');
|
||||||
|
}
|
||||||
|
$teacher = Teacher::where(['id' => $request->teacher->id])->findOrEmpty();
|
||||||
|
if($teacher->isEmpty()){
|
||||||
|
throw new Exception('未找到教师信息');
|
||||||
|
}
|
||||||
|
|
||||||
|
$data = $request->post('code');
|
||||||
|
$user_info = WechatSubscriptController::getCodeAccessToken($data['code']);
|
||||||
|
if (isset($result['code'])) {
|
||||||
|
$message = '获取信息失败';
|
||||||
|
}
|
||||||
|
$openid = $user_info['openid'];
|
||||||
|
$teacher = Teacher::where(['id'=>$request->teacher->id])->findOrEmpty();
|
||||||
|
$teacher->save([
|
||||||
|
'openid' => $openid,
|
||||||
|
]);
|
||||||
|
|
||||||
|
return [
|
||||||
|
'code' => ResponseCode::SUCCESS,
|
||||||
|
'msg' => 'success'
|
||||||
|
];
|
||||||
|
}catch (Exception $e){
|
||||||
|
return [
|
||||||
|
'code' => ResponseCode::FAIL,
|
||||||
|
'msg' => $e->getMessage()
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user