微信开发——网页授权

微信开发——网页授权
项目需求:通过用户在微信中打开网页获取用户的openid来实现绑定消费卡的功能。
项目开发:首先我们需要配置微信的运行环境,这里请参考我的第一篇关于微信开发的日志。
第一步我们得去平台配置网页回调授权的页面,位于网页服务——>网页账号——>修改,可以参照图一:修改回调域名参见图二
图一:设置回调域名地址
图二:设置OAuth2.0网页授权回调域名
第一步完成之后,我们去做第二步,我们分析需要何种授权方式?
方式一:以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面),这种方式只能获取openid;
方式二:以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。
第三步:两种方式的对比,这个请大家参照微信开发者文档。
第四步:介绍一下它的流程
1、引导用户进入授权页面(上面我们配置好的域名)同意授权,获取code
2、通过code换取网页授权access_token(与基础支持中的access_token不同)
3、如果需要,开发者可以刷新网页授权access_token,避免过期
4、通过网页授权access_token和openid获取用户基本信息(支持UnionID机制)
step1:获取code
<?php
public function getCode()
{//定义数组
	$dt = array(
            'appid'         => WX_APPID,     //微信APPID
            'redirect_uri'  => REDIRECT_URI, //回调地址
            'response_type' => 'code',
            'scope'         => 'snsapi_base',//授权方式 snsapi_base 或者 snsapi_userinfo
            'state'         => $_SERVER['REQUEST_TIME']
        );
        $api = 'https://open.weixin.qq.com/connect/oauth2/authorize?'#wechat_redirect';
        header('Refresh:0; url='.$api);
}
?>

step2:获取openid
<?php
  public function executeGetOid()
 {
        $code = $_GET["code"];
        $dt = array(
          'appid'      => WX_APPID,
          'secret'     => WX_APPSECRET,
          'code'       => $code,
          'grant_type' => 'authorization_code'
        );
        $get_token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?'.http_build_query($dt);
        $json_obj = $this->DoCurl($get_token_url);
        $openid = $json_obj['openid'];
}

step3:获取用户信息(当scope为snsapi_userinfo时有效)
<?php
     public function executeGetuserinfo()
    { 
        $access_token = file_get_contents('access_token.txt');
        $dt = array(
          'access_token' => $access_token,
          'openid'       => $this->openid,
          'lang'         => 'zh_CN'
        );
        $get_userinfo_url = 'https://api.weixin.qq.com/sns/userinfo?'.http_build_query($dt);
        $json_obj = $this->DoCurl($get_userinfo_url);
    }
?>

step4:封装方法DoCurl()(这个的配置是在服务器中开启的 具体百度 (windows直接开就行,linux需要phpize编译安装加入模块)
<?php
 public function DoCurl($url)
    {
        $ch = curl_init();
        curl_setopt($ch,CURLOPT_URL,$url);
        curl_setopt($ch,CURLOPT_HEADER,0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
        $res = curl_exec($ch);
        curl_close($ch);
        $json_obj = json_decode($res,true);
        return $json_obj;
    }
?>


最后的最后,本人博客水平有限,希望有问题的大家指证出来,我好修改。我的邮件是cyanskye0513@outlook.com




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值