热门IT资讯网

微信-网页授权获取用户openid

发表于:2024-11-25 作者:热门IT资讯网编辑
编辑最后更新 2024年11月25日,第一步:用户同意授权,获取code在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高级接口后,默认带有scope参数中的snsapi_base和snsapi_userinf

第一步:用户同意授权,获取code


在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高级接口后,默认带有scope参数中的snsapi_base和snsapi_userinfo),引导关注者打开如下页面:


https://open.weixin.qq.com/connect/oauth3/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

所以

先用调试接口生成自定义菜单,菜单json如下:

{

"button":[

{

"name":"风信科技",

"sub_button":[

{

"type":"click",

"name":"关于风信",

"key":"FS_V1_1001"

},

{

"type":"click",

"name":"我们的服务",

"key":"FS_V1_1002"

},

{

"type":"click",

"name":"成功案例",

"key":"FS_V1_1003"

},

{

"type":"click",

"name":"解决方案",

"key":"FS_V1_1004"

},

{

"type":"click",

"name":"OA通讯录",

"key":"FS_V1_1005"

}]

},

{

"name":"风信产品",

"sub_button":[

{

"type":"click",

"name":"平台产品",

"key":"FS_V2_1001"

},

{

"type":"click",

"name":"领域产品",

"key":"FS_V2_1002"

},

{

"type":"click",

"name":"行业产品",

"key":"FS_V2_1003"

},

{

"type":"view",

"name":"微办公",

"url":"https://open.weixin.qq.com/connect/oauth3/authorize?appid=$APPID&redirect_uri=$URL&response_type=code&scope=snsapi_base&state=1#wechat_redirect"

}]

},

{

"name":"风信娱乐",

"sub_button":[

{

"type":"click",

"name":"抽奖活动",

"key":"FS_V3_1001"

},

{

"type":"click",

"name":"查询天气",

"key":"FS_V3_1002"

},

{

"type":"view",

"name":"更多活动",

"url":"http://www.funsing.com/"

}]

}]

}

第二步,获取openId,

public function index() {        $code = I('get.code');        $weid = $this->getOpenId($code);        if ($weid == "") {            $this->redirect('/Home/Index/login', array(), 0, "waiting...");        } else {            $result = json_decode($this->client->IsAccount(array("weId"=>$weid))->IsAccountResult);            $info = $result->ErrMsg;            $this->gotoPage($info, $weid);        }    }


//通过code取得openid    public function getOpenId($code) {        $urlpre = "https://api.weixin.qq.com/sns/oauth3/access_token?appid=".$this->appId."&secret=".$this->appsecret."&grant_type=authorization_code&code=";        $url = $urlpre.$code;        $ch = curl_init();        curl_setopt($ch, CURLOPT_URL, $url);        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);        $output = curl_exec($ch);        curl_close($ch);        $jsoninfo = json_decode($output, true);        //$access_token = $jsoninfo["access_token"];        $openid = $jsoninfo["openid"];        return $openid;           }
0