PHP获取微信的 openid 和基本信息(非小程序)

本次开发,是一个投票的活动,由于没有登录,导致没有cookie和session;所以无法判断是否为某一特定的用户,这里就需要用微信端的openid来做判断;

官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842

官方流程
网页授权流程分为四步:
1、引导用户进入授权页面同意授权,获取code
2、通过code换取网页授权access_token(与基础支持中的access_token不同)
3、如果需要,开发者可以刷新网页授权access_token,避免过期
4、通过网页授权access_token和openid获取用户基本信息(支持UnionID机制)

1.相关配置

1.1、首先是要在公众号后台进行配置,设置回调路径,具体要求参照官方文档。

在开发 – 接口权限 – 网页服务 – 网页帐号 – 网页授权获取用户基本信息中配置如下:

1.2,在开发者中心查看:appid和appsecret

2.获取code:

前端页面访问链接:{返回code,一般不会直接打印}

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx59669XXXXXX5320&redirect_uri=http://www.xxxxx.cn/getOpenid&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect
参数说明:
appid//公众平台的appid
redirect_uri//需要跳转的方法
scope:自己去官网看看

3.获取openid:

    function getOpenid(){
        $code = $_GET['code'];//获取code
        $appid= "wx596XXXXXXXXXX5320";
        $secret= "8c13a2XXXXXXXXXXXXXXXXf8ad6f02";
     
        $get_token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$secret.'&code='.$code.'&grant_type=authorization_code';
        $ch = curl_init();
        curl_setopt($ch,CURLOPT_URL,$get_token_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);
        $openId = $json_obj['openid'];
        echo $openId;
    }

 

發表回覆

你的電郵地址並不會被公開。 必要欄位標記為 *