opensnsapi版本|求助微信内置浏览器打开的网页获取微信用户openid

❶ 微信授权 获取授权token的时候 返回的 json 里 scope 字段 为什么一直是 snsapi_base

微信授权里的步骤为:

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

2第二步:通过code换取网页授权access_token

3第三步:刷新access_token(如果需要)

4第四步:拉取用户信息(需scope为 snsapi_userinfo)

其中,第一步的请求地址是:

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

对照微信公开文档的表格:

参数 是否必须 说明

appid 是 公众号的唯一标识

redirect_uri 是 授权后重定向的回调链接地址,请使用urlencode对链接进行处理

response_type 是 返回类型,请填写code

scope 是 应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息)

state 否 重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节

#wechat_redirect 是 无论直接打开还是做页面302重定向时候,必须带此参数

其中有一个参数就是scope,如果此刻你传过去的是snsapi_base那么到了 第二步 中,微信返回的就是snsapi_base,如果你需要snsapi_userinfo 的话,第一步的时候scope传入snsapi_userinfo 即可

❷ 微信 同一个用户再次使用snsapi userinfo 会有授权页面吗

根据微信公众号开发官方文档: 获取用户信息步骤如下: 1 第一步:用户同意授权,获取code 2 第二步:通过code换取网页授权access_token 3 第三步:刷新access_token(如果需要) 4 第四步:拉取用户信息(需scope为 snsapi_userinfo) 1 获取code 在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高级接口后,默认拥有scope参数中的snsapi_base和snsapi_userinfo),引导关注者打开如下页面: https://open/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 若提示“该链接无法访问”,请检查参数是否填写错误,是否拥有scope参数对应的授权作用域权限。 尤其注意:由于授权操作安全等级较高,所以在发起授权请求时,微信会对授权链接做正则强匹配校验,如果链接的参数顺序不对,授权页面将无法正常访问 其中: AppID – 公众号的唯一标识 REDIRECT_URI – 跳转url SCOPE – 值为snsapi_base(不弹出授权页面,直接跳转,只能获取用户openid) 或snsapi_userinfo (弹 出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息) STATE – 开发者可以自定义填写a-zA-Z0-9的参数值 2 通过code换取网页授权access_token 如果用户同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。 state就是上面的STATE参数原样传过来的 实现代码: <code class="hljs php">$code = I('get/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code appid – 公众号的唯一标识 secret – 密钥 code – 上述所返回的code grant_type – 值为authorization_code 实现代码: <code class="hljs bash">$url = 'https://api/cgi-bin/token?grant_type=client_credential&appid=' /cgi-bin/token?grant_type=client_credential&appid=' /sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN access_token – 上述所获取的access_token openid – 公众号唯一标识 实现代码: <code class="hljs php">$url = "https://api/cgi-bin/user/info?access_token=$access_token&openid=$openid&lang=zh_CN"; $str = file_get_contents($url); $str = json_decode($str, true); if (empty($str['errcode'])) { //创建user并绑定openid }else{ //错误处理 }</code> 以上就是微信公众号获取用户信息的具体步骤。 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

❸ 应用授权作用域,拥有多个作用域用逗号分隔,网页应用目前仅填写snsapi

所示开启了session(即有session_start())的页面都可以用

❹ 微信公众平台 网页 跳转 如何获取 账号

一、通过全局Access Token获取用户基本信息1. 用户关注以及回复消息的时候,均可以获得用户的OpenID<xml> <ToUserName><![CDATA[gh_b629c48b653e]]></ToUserName> <FromUserName><![CDATA[ollB4jv7LA3tydjviJp5V9qTU_kA]]></FromUserName> <CreateTime>1372307736</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[subscribe]]></Event> <EventKey><![CDATA[]]></EventKey></xml>其中的FromUserName就是OpenID2. 然后使用access_token接口,请求获得全局Access Tokenhttps://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET返回结果:{ "access_token": "-Se0I-WmOLLniAYLAwzhbYhXNjbLc_-rz2y441W9qgfnmNtIZWSjSQ", "expires_in": 7200}3. 再使用全局ACCESS_TOKEN获取OpenID的详细信息https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID返回如下:{ "subscribe": 1, "openid": "oLVPpjqs2BhvzwPj5A-vTYAX4GLc", "nickname": "方倍", "sex": 1, "language": "zh_CN", "city": "深圳", "province": "广东", "country": "中国", "headimgurl": "http://wx.qlogo.cn/mmopen/tUXaxSdoZG6iane5ko9H30krIbzGv/0", "subscribe_time": 1386160805}至此,获得用户的基本信息。 二、通过OAuth2.0方式弹出授权页面获得用户基本信息1. 首先配置回调域名 2. 构造请求url如下:https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8888888888888888&redirect_uri=http://mascot.app.com/oauth2.php&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect页面URL中的scope=snsapi_userinfo 表示应用授权作用域为请求用户信息★ 如果使用别人的AppID和AppSecret,那么获得的OpenID是那个有高级接口权限的服务号的,这里可以通过消息回复,获取本公众账号下的OpenID,带入回调中,与另一个OpenID进行关联https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8888888888888888&redirect_uri=http://mascot.app.com/oauth2.php?userid=oc7tbuPA9BgUCLADib5nB3k2KWWg&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect将该链接回复给关注用户,用户点击后,弹出应用授权界面3. 回调页面得到链接如下,回调url中将包含参数codehttp://mascot.app.com/oauth2.php?code=&state=1或者 http://mascot.app.com/oauth2.php?userid=oc7tbuPA9BgUCLADib5nB3k2KWWg&code=&state=14. 再使用code换取oauth2的授权access_tokenurl如下:https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx8888888888888888&secret=&code=&grant_type=authorization_code获得授权Access Token:{ "access_token": "_KKf2CotGj2cBNUKQQvj-G0ZWEE5-uBjBz941EOPqDQy5sS_GCs2z40dnvU99Y5AI1bw2uqN–", "expires_in": 7200, "refresh_token": "_KKf2CotGj2cBNUKQQvj-G0ZWEE5-uBjBz941EOPqDQy5sS_GCs2z40dnvU99Y5CZPAwZksiuz_6x_TfkLoXLU7kdKM2232WDXB3Msuzq1A", "openid": "oLVPpjqs9BhvzwPj5A-vTYAX3GLc", "scope": "snsapi_userinfo,"}5. 再使用授权Access Token获取用户信息url如下:https://api.weixin.qq.com/sns/userinfo?access_token=_KKf2CotGj2cBNUKQQvj-G0ZWEE5-uBjBz941EOPqDQy5sS_GCs2z40dnvU99Y5AI1bw2uqN–&openid=oLVPpjqs9BhvzwPj5A-vTYAX3GLc返回如下{ "openid": "oLVPpjqs9BhvzwPj5A-vTYAX3GLc", "nickname": "方倍", "sex": 1, "language": "zh_CN", "city": "Shenzhen", "province": "Guangdong", "country": "CN", "headimgurl": "http://wx.qlogo.cn/mmopen/bIZPXu4BK1XNWzSXB3Cs4qpBBg18/0", "privilege": []}

❺ 怎么给网页授权获取oppenId

从上面可以看出,click类型的菜单有key属性,而view类型的菜单没有key属性,与之对应的是url属性。key值是用于判断用户点击了哪个click类型的菜单项。而view类型的菜单没有key属性,无法在公众账号后台判断是否有用户点击了view类型的菜单项,也就没办法知道哪个用户点击了view类型的菜单项,好在腾讯开放了高级接口,运用OAuth2.0网页授权接口可以获取openid,下面将介绍网页授权获取用户基本信息接口。网页授权获取用户基本信息服务号获得高级接口后,默认带有scope参数中的snsapi_base和snsapi_userinfo。这里使用snsapi_base获取openid,把上面的url换成配置授权回调页面域名进入微信公众平台后台后,依次进入 服务-我的服务,找到OAuth2.0网页授权,点击右侧的修改授权回调域名配置规范为全域名并且不带http。这里我们填写上面的ip地址,192.168.1.1用户授权并获取code,把菜单更换成{ "type":"view", "name":"歌手简介", "url":"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxcd983566d32442bc&redirect_uri=http://192.168.1.1/weixin/weixin.do?action=viewtest&response_type=code&scope=snsapi_base&state=1#wechat_redirect" } 菜单跳转的actionString code = request.getParameter("code");//我们要的codecode说明 : code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。使用code换取access_token网页授权的作用域为snsapi_base,本步骤中获取到网页授权access_token的同时,也获取到了openid,snsapi_base式的网页授权流程即到此为止。换取网页授权access_token页面的构造方式:https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code正确时返回json数据{ "access_token":"ACCESS_TOKEN", "expires_in":7200, "refresh_token":"REFRESH_TOKEN", "openid":"OPENID", "scope":"SCOPE" }到此我们成功获取到了用户的openid

❻ 微信api 怎么获取scopesnsapi

微信公众号(公众平台) 和 微信开放平台 是两码事。公众号(公众平台)获取的scope只包括两种:snsapi_base 和snsapi_userinfo,前者是静默获取,用户无感知;后者是需要用户确认同意的。但是微信开放平台(https://open.weixin.qq.com/) 就可以获取snsapi_login这种scope。坑爹的是,公众平台的认证和开放平台的认证是独立的,你如果想获取snsapi_login,还需要重新注册开放平台,交300块钱认证。如果你只是想实现微信扫二维码登录的话,其实snsapi_base 也足够了,因为它可以获取到用户的openid,你可以之后用来和自己数据库中作比对。

❼ 求助,微信内置浏览器打开的网页,获取微信用户openid

首先你的网站入口必须是微信服务号(开通认证、拥有获取用户openid权限;订阅号是不行的)。网页通过微信的Oauth2认证链接。然后通过服务号菜单链接进入网站,如: https://open.weixin.qq.com/connect/oauth2/authorize?appid=YOURAPPID&redirect_uri=http://YOUWEBSITE/oauth2.php&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect自己根据微信提供的oauth2接口文档,编写oauth2.php内容,(网上有相关官方SDK)按下面的步骤:1.获取用户openid2.获取accesson_token3.获取用户信息4.授权注册用户,若已存在该用户则直接进入网站。

❽ 微信OAuth2.0授权回调页面域名设置问题怎么解决

当下的解决方案是引入一个新的非常简单的应用来作为微信授权的代理服务,可以这么做:

1. 把公众号的网页授权接口域名设置成另外一个子域名,如proxy.your.com; 2. 然后把php_weixin_proxy里面的index.php部署到proxy.your.com

php_weixin_proxy下的index.php是一个很简单的php文件,你可以直接查看源码了解它的实现方式。因为当前项目的环境,我采用php来完成这个代理服务实现,实际上,你完全可以用任意平台语言来完成类似的功能。

当其它业务需要发起微信授权时,将授权请求先发到proxy.your.com,然后proxy.your.com会把这个请求转发到微信; 当用户同意授权后,proxy.your.com会收到微信的授权回调,并把回调结果(code、state参数)原封不动地再返回给最开始发起授权的业务。

唯一的区别在于,在不使用proxy.your.com的时候,你从应用发起微信授权的链接应该是这样的: https://open.weixin.qq.com/connect/qrconnect?appid=xxxxx&redirect_uri=http%3A%2F%2Fpassport.your.com%2F&response_type=code&scope=snsapi_login&state=584bc87e11ff37492#wechat_redirect 用了proxy.your.com之后,这个授权链接就应该是这样的: http://proxy.your.com/?appid=xxxxx&redirect_uri=http%3A%2F%2Fpassport.your.com%2Flogin%2Fnotify&response_type=code&scope=snsapi_base&state=584bc87e11ff37492&device=pc

后面这个链接跟上面的比: 1. 后面的链接中的host变成了proxy.your.com,也就是代理的授权回调域名; 2. 后面的多了一个device参数,这个是必要的。因为微信pc端跟移动端的授权地址是不一样的,而后面的链接是发送个proxy.your.com的,所以需要多加个参数告诉它在转发给授权申请给微信的时候,是用PC端还是移动端的授权地址。


赞 (0)