在很多场景下我们需要用户在微信内打开网页时获取用户的openid并做对应的业务处理,因为openid对同一个公众号是唯一的,所以可以根据openid实现诸如投票,抽奖,注册等等的业务,那么如何获取用户的openid呢,根据微信官方提供的网页授权接口可以分为两种情况,一种是只获取用户的openid另一种是获取用户的基本信息(包括用户的昵称、性别、头像等)。下面分别就这两种情况来介绍一下。
先说第一种情况,只获取用户的opid,这种情况是无需用户授权的,也成为静默授权,需要经历数次网页跳转,时序图如下。
下面给出PHP代码示例(代码中的CODEURL、OPENIDURL以及其他常量配置信息请自行更换为正确的配置)
//获取用户openid 为避免重复请求接口获取后应做存储
function getOpenId(){
if(isset($_SESSION['openid'])){
return $_SESSION['openid'];
}else{
//1.用户访问一个地址 先获取到code
if(!isset($_GET['code'])){
//构建回调地址为当前地址
$redurl = $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$url = self::CODEURL . "appid=" .self::APPID ."&redirect_uri={$redurl}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";
//响应跳转请求
header("location:{$url}");exit;
}else{
//2.根据code获取到openid
//调用接口获取openid
$openidurl = self::OPENIDURL . "appid=" . self::APPID . "&secret=".self::SECRET . "&code=" . $_GET['code'] . "&grant_type=authorization_code";
$data = file_get_contents($openidurl);
$arr = json_decode($data,true);
$_SESSION['openid'] = $arr['openid'];
return $_SESSION['openid'];
}
}
}
//配置参考
const CODEURL = 'https://open.weixin.qq.com/connect/oauth2/authorize?';
const OPENIDURL = 'https://api.weixin.qq.com/sns/oauth2/access_token?';
如果要获取用户基本信息的时序图如下:
我们会看到在请求获取code的时候模式不一样,获取到用户的openid(其实还有access_token等信息)后,另外多了一次使用access_token调用微信的接口来拉取用户信息。在请求获取code时scope这个参数需要修改为snsapi_userinfo,拉取用户信息的地址格式如下:
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
另外如果要获取用户的基本信息是需要用户授权的,也就是在请求获取code这个步骤中需要用户授权确认,但是如果用户关注了公众号 在公众号内点击地址进入的话也不需要授权,是静默模式。
-
离心泵 离心水泵 全焊接球阀 焊接球阀 上海螺杆泵 磁力泵 化工泵 隔膜泵36 上海离心泵 上海磁力泵 上海磁力泵 上海隔膜泵 上海螺杆泵 上海化工泵21 上海污泥螺杆泵 螺杆泵11 污泥螺杆泵27 离心泵54 直埋全焊接球阀 埋地全焊接球阀 泵 水泵 上海离心泵 上海离心水泵 焊接球阀 全焊接球阀 上海螺杆泵 离心泵 离心水泵21(0) 回复 (0)
-
繁體小說網的特點是它提供了方便的網路閱讀平台,讀者可以隨時隨地在網絡上閱讀自己喜愛的小說,而不需要購買實體書籍或者到書店借閱。此外,繁體小說網還為讀者提供了一些方便的功能,例如書籤、排行榜、推薦等,以幫助讀者更好地管理和尋找自己喜愛的小說。(0) 回复 (0)
-
想要學會百家樂破解,第一步要做的事是先觀察賭場荷官洗牌的方式(0) 回复 (0)
-
讨债公司/蓝月传奇辅助/蓝月辅助(0) 回复 (0)
-
我们会看到在请求获取code的时候模式不一样,获取到用户的openid(其实还有access_token等信息)后,另外多了一次使用access_token调用微信的接口来拉取用户信息。在请求获取讨债公司 搬家公司 网站制作(0) 回复 (0)