123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- <?php
- namespace App\Http\Controllers\Wechat\Oauth;
- use App\Http\Controllers\WechatController;
- use App\Http\Requests;
- use Illuminate\Http\Request;
- use Illuminate\Http\Response;
- use EasyWeChat\Foundation\Application;
- use WechatOP;
- use App\Http\Controllers\Wechat\Api\WechatInnerApisController;
- /**
- * 授权完,回传openid到redirect_url去
- * @author zhoulingjie
- *
- */
- class UserOauthsController extends WechatController
- {
- public function __construct()
- {
- // TODO 加密
- $this->gzh_app_id = $_REQUEST['gzh_app_id'];
- parent::__construct($this->gzh_app_id);
- }
-
- /**
- * 本平台作为第三方授权
- * 授权完后传openid到目标站点设置(cookie不能跨域)
- *
- */
- public function oauth_callback(Request $request)
- {
- v('oauth_callback_start');
- $user = array();
- try{
- if(env('DEVELOP_MODE') == 'local'){
- $user['openid'] = 'oKXfNs_4SvNpMZWOzNdJklWFEn8Y';
- }else{
- // 获取 OAuth 授权结果用户信息
- v('oauth_callback_get_user');
- $user = $this->app->oauth->setRequest($request)->user();
- v('simple_user_data:');v($user);
- $user = $user->original;
-
- $data = array();
- $data['appid'] =$this->gzh_app_id;
- $data['distribution_channel_id'] = isset($this->official_account['distribution_channel_id'])?$this->official_account['distribution_channel_id']:null;
- $data['openid'] = $user['openid'];
- // 如果unionid没有取到,则自定义1个
- $my_unionid = $data['openid'];
- v('my_unionid:'.$my_unionid);
- $user['unionid'] = $data['unionid'] = isset($user['unionid'])?$user['unionid']:$my_unionid;
- // 去重在后台判断,支付号不需要保存用户
- if(isset($this->official_account['official_account_type']) && $this->official_account['official_account_type'] =='third_platform_pay'){
- v('oauth_third_platform_pay:'.$data['openid']);
- }else{
- // 性能考虑,在h5那边保存用户
- v('to_save_data');v($data);
- // $this->WechatApi->save_login_wx_user($data);
- }
-
- }
- }
- catch(\Exception $e){
- v('oauth_callback_ept:'.$e->getMessage());
- }
-
- $redirect_url = $request->get('redirect_url');
- v('oauth_callback_direct_url0:'.$redirect_url);
- $openid = isset($user['openid'])?$user['openid']:'';
- $unionid = isset($user['unionid'])?$user['unionid']:'';
- if(strpos($redirect_url,'zsypay') > -1){
- // v('has zsypay');
- }else{
- $redirect_url = urldecode($redirect_url);
- }
- if(strpos($redirect_url,'?') > -1){
- $redirect_url = $redirect_url.'&openid='.$openid.'&unionid='.$unionid;
- }else{
- $redirect_url = $redirect_url.'?openid='.$openid.'&unionid='.$unionid;
- }
-
- v('oauth_callback_direct_url:'.$redirect_url);
- return redirect($redirect_url);
- }
-
- /**
- * ydy.wangluogudu.com/user_oauth?gzh_app_id=wx6916de1267c67d50&redirect_url=http%3a%2f%2fydy.wangluogudu.com%2foauth%2fshow_openid%3fgzh_app_id%3dwx6916de1267c67d50
- * 获取用户信息
- */
- public function user_oauth(Request $request)
- {
- v('third_check_user_auth_start');
- $params = array();
- $params['gzh_app_id'] = $request->get("gzh_app_id");
- $params['redirect_url'] = $request->get("redirect_url");
- $this->options['oauth']['callback'] .= '?'.http_build_query($params);
- // options改变了,这个app对象必须重新赋值
- $this->app = WechatOP::app($this->options);
- v($this->options['oauth']['callback']);
- return $this->app->oauth->setRequest($request)->redirect();
- }
-
- public function show_openid(Request $request)
- {
- echo '您的openid:'.$request->get('openid');
- die();
- }
- }
|