600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > php公众号获取code 微信开发系列——公众号内嵌H5页面获取code 拿到openID

php公众号获取code 微信开发系列——公众号内嵌H5页面获取code 拿到openID

时间:2024-02-03 07:11:36

相关推荐

php公众号获取code 微信开发系列——公众号内嵌H5页面获取code 拿到openID

如果在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。

我们要进行授权,先要经过用户授权(静默授权和授权页弹出授权两种,具体看文档中scope解析)拿到 code ,再用 code 去换取网页授权 access_token, 使用access_token 去拿到用户的信息。

1. 准备工作

2. 处理过程

1、官方文档中获取code参数示例:

scope 为 snsapi_base

https://open./connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https%3A%2F%%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdapter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_base&state=123#wechat_redirect

scope 为 snsapi_userinfo

https://open./connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%%2Foauth_response.php&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect

2、我的项目中只需要拿到 openID,所以采用的授权作用域为 scope = snsapi_base(不弹出授权页面,直接跳转,只能获取用户 openid )。

需要注意的是,redirect_uri 填自己部署项目的域名(注意该链接一定要使用urlencode 转换一下),不然除了第一个参数后面的参数传不过去(微信中其他URL中参数配置也是这样)。

获取地址的步骤和参数配置我就不赘述了,文档里说的很清楚。在重定向成功后解析code,这里方法贴一下:

/**

* 根据参数名 获取 URL 路径中的参数

* @param {String} name 要读取的参数名称

*/

function getUrlParam (name) {

var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)')

let url = window.location.href.split('#')[0]

let search = url.split('?')[1]

if (search) {

var r = search.substr(0).match(reg)

if (r !== null) return unescape(r[2])

return null

} else {

return null

}

}

getUrlParam('code') 调用一下就能拿到 code 结果,然后用这个 code 去调后台的接口让后台去微信后台拿openID。

或者用这个方法:

function GetRequest() {

var url = location.search; //获取url中"?"符后的字符串

var theRequest = new Object();

if (url.indexOf("?") != -1) {

var str = url.substr(1);

strs = str.split("&");

for(var i = 0; i < strs.length; i ++) {

theRequest[strs[i].split("=")[0]]=(strs[i].split("=")[1]);

}

}

return theRequest;

}

console.log( GetRequest());

作者:阿布_0caf

链接:/p/b5929770f92d

來源:简书

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

遇到的问题

提示 redirect_uri 域名与后台配置不一致,参考官方文档(前面的文档链接)如下片段:

报错 redirect_uri 域名与后台配置不一致配置

后台 access_token 拿不到,提示和白名单 IP 有关,则参考微信返回报错,将提示的IP加入白名单。

3. 测试方案

公众号测试号

如果需要先测试,可以参考我写的公众号测试号的文章:微信开发系列——使用公众号测试号测试公众号webAPP

微信开发者工具

打开微信开发者工具,将模式切换到公众号网页版调试,在地址栏中输入要测试的地址,进行验证。

微信开发者工具调试模式

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。