php抓取网页域名(php语言为例介绍如何获取微信公众号用户openid分享)
优采云 发布时间: 2021-10-05 22:09php抓取网页域名(php语言为例介绍如何获取微信公众号用户openid分享)
微信公众平台,简称公众号。曾被命名为“公众平台”、“媒体平台”、微信公众号,最终定位为“公众平台”。作为一个公共平台,一个微信公众号会有很多订阅者,简称粉丝。微信公众平台获取微信订阅者(粉丝)的openid在公众号的开发中有很多用途,包括向订阅者发送消息,包括各种消息、模板消息等,这里分享给需要获取openid的开发者一个简单的流程和部分代码,以及一些解决问题的方法,第一次联系微信openid的朋友参考一下。目的只是为了获取openid和个人基本信息。至于优化和应用,
openid是公众号订阅者(粉丝)的唯一标识,仅对当前公众号有效。
下面以php语言为例介绍如何获取微信订阅者的openid。
一、准备
首先你得有公众号,类型是服务号,外网可以访问的域名(如果要映射公网服务器,需要备案)。获取openid需要的公众号的appid和secret(登录微信公众平台,【开发】->【基本配置】中的开发者ID(AppID)和开发者密码(AppSecret)只是)。二是设置网页授权域名(登录微信官方平台,在【设置】->【公众号设置】->【功能设置】->网页授权域名,按照步骤进行设置it),这个域名就是你得到openid的web项目发布的域名。请注意,服务器必须在端口 80 上运行。
二、调用接口获取code
public function getcode(){
//基本配置
$appid=**************;//这里填写你的appid
$redirect_uri=urlencode("http://*********/getuserinfo");//这里用你的网页授权回调地址替换一下
$url="https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect";
header("location:".$url);
}
当用户用微信进入我们的网页并调用getcode方法时,如果参数正确且网页的授权域名正确,微信会将页面重定向到我们提交的回调地址,我们想要的代码就会也被传递过去。.
三、获取code作为参数调用接口获取openid
//回调函数
public function getuserinfo(){
$appid = "***********";//这里添加你的微信公众号appid
$secret = "***********";//这里添加你的微信公众号secret
//这里获取到了code
$code = $_GET['code'];
//第一步:取得openid
$oauth2Url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$secret."&code=".$code."&grant_type=authorization_code";
$oauth2 = $this->http_curl($oauth2Url);
//accestoken
$access_token = $oauth2["access_token"];
//openid
$openid = $oauth2['openid'];
//第二步:根据全局access_token和openid查询用户信息
$get_user_info_url = "https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token."&openid=".$openid."&lang=zh_CN";
$userinfo = $this->http_curl($get_user_info_url);
dump($userinfo);
}
function http_curl($url){
//用curl传参
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
//关闭ssl验证
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch,CURLOPT_HEADER, 0);
$output = curl_exec($ch);
curl_close($ch);
return json_decode($output, true);
}
四、备注
1. 如果网页授权域名设置与提交的回调地址域名不对应,微信将无法回调。(网页授权域名:用户在网页授权页面同意对公众号进行授权后,微信会将授权数据发送到回调页面,回调页面需要在该域名下,以确保安全可靠。该域名需要ICP注册,不支持IP地址、端口号和短链域名)
2. 获取openid使用的纯授权方式是静态授权,没有订阅用户的许可(用户看不到授权过程),想要获取用户头像、昵称等信息是另一种授权(用户端会弹出一个授权窗口)。