html微信打开网页 要求用sa,微信网页开发(示例代码)

微信网站一般是先要微信网页授权后获取到access_token,才有资格获取用户信息的,所以如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。

第一步是先获取用户授权(具体的请看微信开发者文档):

授权也分两种:静态授权和手动授权:

关于网页授权的两种scope的区别说明

1、以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)

2、以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。

3、用户管理类接口中的“获取用户基本信息接口”,是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的。

1 /**2 * 网页授权获取用户openid(静默授权)3 */

4 public function getOpenid($code){5 $url = ‘https://api.weixin.qq.com/sns/oauth2/access_token?appid=‘. Wxapi::APPID . ‘&secret=‘ . Wxapi::APPSECRET . ‘&code=‘ . $code . ‘&grant_type=authorization_code‘;6 $result = json_decode($this->CurlGet($url),true);7 return $result;8 }

请参考文档来理解:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842

1 /**2 * 网页授权获取用户基本信息(手动同意)3 */

4 public function getUserInfo($code,$refresh_token){5 if(!empty($code)){6 //code换取网页授权access_token

7 $url = ‘https://api.weixin.qq.com/sns/oauth2/access_token?appid=‘. Wxapi::APPID . ‘&secret=‘ . Wxapi::APPSECRET . ‘&code=‘ . $code . ‘&grant_type=authorization_code‘;8 $result = json_decode($this->CurlGet($url),true);9 }else if(!empty($refresh_token)){10 //刷新access_token

11 $url = ‘https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=‘ . Wxapi::APPID . ‘&grant_type=refresh_token&refresh_token=‘ . $refresh_token;12 $result = json_decode($this->CurlGet($url),true);13 if(!empty($result[‘errcode‘])){14 $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . Wxapi::APPID . "&redirect_uri=" . $redirect_uri . "&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect";//refresh_token过期失效重新授权

15 header("Location:$url");//跳转授权页面

16 }17 }else{18 return array(‘errcode‘ => ‘???‘,‘errmsg‘ => ‘请传入code或refresh_token‘);19 }20

21 //错误返回处理

22 if(!empty($result[‘errcode‘])){23 return $result;24 }else{25 //拉取用户信息

26 $url = ‘https://api.weixin.qq.com/sns/userinfo?access_token=‘ . $result[‘access_token‘] . ‘&openid=‘ . $result[‘openid‘] . ‘&lang=zh_CN‘;27 $user_info = json_decode($this->CurlGet($url),true);28 $user_info[‘refresh_token‘] = $result[‘refresh_token‘];29

30 return $user_info;31 }32 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值