2018-04-19 16:54:03 ws932734384 阅读数 26369
  • asp获取微信公众号网页授权和用户信息(code、access_...

    讲解用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。 获取code、access_token、openid、用户昵称、地区、性别、头像等 官方文档 https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Web_Developer_Tools.html#1 开发步骤 1、引导用户进入授权页面同意授权,获取code 2、通过code换取网页授权access_token(与基础支持中的access_token不同) 3、如果需要,开发者可以刷新网页授权access_token,避免过期 4、通过网页授权access_token和openid获取用户基本信息(支持UnionID机制) asp获取微信公众号网页授权和用户信息(code、access_token、openid等) 01-asp获取微信公众号网页授权和用户信息演示 02-asp获取远程网页内容 03-官方文档概要 04-获取用户同意授权 05-拿到code后获取返回信息 06-获取access_token内容 07-获取微信用户openid数据 08-获取微信用户的所有信息 09-用户头像、昵称、区域、性别

    334 人正在学习 去看看 黄菊华

        本人最近要做微信公众号网页开发的项目,其中有个需求是判断用户是否关注公众号,由于之前没有接触过微信授权的东西,所以提前开始做调研。在度娘上看了好多博客、百度知道、百度经验、知乎问答等,还仔细阅读了微信公众平台开发文档,大致了解到:

        微信网页授权分两种,第一种是snsapi_base(静默授权,用户无感知),第二种是snsapi_userinfo(第一次授权需要用户点击登录确认)。静默授权只需要两步就能拿到开发者需要的openID,而第二种授权方式,一共需要四步,可以拉取到用户信息(昵称、头像等)。具体过程这里不在赘述,参阅微信开发者文档。


        但是,本人发现一个不好的事情,获取到的用户信息里,并没有度娘告诉我的用于判断用户是否关注公众号的字段 subscribe 。然后,继续查阅博客、百度知道、百度经验、知乎问答,其中,有一篇博客让我如获至宝,下面是博客的截图:


        然后我就天真的相信,只有在unionID机制下,获取到的用户信息里才会有 subscribe 字段。后来,查看微信公众平台开发文档,其中有一段:


        那么,只有把公众号绑定到微信开放平台上才能使用unionID机制。所以自己就注册了一个微信开放平台,要绑定公众号的时候发现,只有完成开发者资质认证才能绑定。但是认证需要:



        以上只是一部分。这哪儿是我一个开发能做的事儿啊,所以向项目经理说明了情况,又向技术中心老大申请……,经过了一系列繁杂又不太顺利的流程。最后,让我来注册,需要什么材料找行政要。

        当然,在协调的过程中,我也没闲着,咨询了做过微信网页授权的同事,自己也继续翻阅微信开发文档(相当烂)、在本地尝试授权,获取用户信息,最终发现:不需要unionID机制,也能获取用户基本信息,拿到 subscribe 字段。那么正题来了!


微信网页授权并获取用户基本信息(是否关注公众号、头像、昵称等)步骤:  

          1、用户同意授权,获取code(使用静默授权即可)

               参阅 微信网页授权 第一步

            2、通过code换取  网页授权access_token  和 openID(此处的access_token为网页授权过程专用)

                参阅 微信网页授权 第二步

            3、使用AppId和AppSecret:获取access_token

                参阅  获取access_token

            4、使用openID和access_token获取用户基本信息

                参阅 获取用户基本信息(包括UnionID机制)

最终获取到的用户基本信息如下图:

        


        好了,到这里终于拿到了我需要的判断用户是否关注公众号的字段: subscribe 。


        饶了这么大圈子,有些感触:微信公众平台开发文档不容易看懂,unionID机制到底是啥,绑定了开放平台才叫unionID机制吗,那我现在这种调接口的方法(并没有绑定微信开放平台)属于unionID机制吗。

        再多说一句,其实这些逻辑,绝大部分是在后端完成的(access_token、appsecret安全等级都比较高)。所以,作为前端,只要调接口==》回调地址,再调接口==》得到用户基本信息。

2017-10-16 11:20:14 qq_31617637 阅读数 9899
  • asp获取微信公众号网页授权和用户信息(code、access_...

    讲解用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。 获取code、access_token、openid、用户昵称、地区、性别、头像等 官方文档 https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Web_Developer_Tools.html#1 开发步骤 1、引导用户进入授权页面同意授权,获取code 2、通过code换取网页授权access_token(与基础支持中的access_token不同) 3、如果需要,开发者可以刷新网页授权access_token,避免过期 4、通过网页授权access_token和openid获取用户基本信息(支持UnionID机制) asp获取微信公众号网页授权和用户信息(code、access_token、openid等) 01-asp获取微信公众号网页授权和用户信息演示 02-asp获取远程网页内容 03-官方文档概要 04-获取用户同意授权 05-拿到code后获取返回信息 06-获取access_token内容 07-获取微信用户openid数据 08-获取微信用户的所有信息 09-用户头像、昵称、区域、性别

    334 人正在学习 去看看 黄菊华

前几天做的一个项目,微信助力活动,需要获取微信用户的头像,然后存表,在获取微信头像的时候,遇到了两个问题,可能很普通的问题,解决起来也很好解决!



  • 问题一Accesstoken 问题(获取信息接口的问题)

网页授权的 AccessToken 和获取用户信息的 AccessToken 不是一个东西。

也就是获取用户信息接口地址应是

https://api.weixin.qq.com/sns/userinfo

而不是

https://api.weixin.qq.com/cgi-bin/user/info

  • 问题二 48001错误问题

微信错误: 微信登录提示48001,{“errcode”:48001,”errmsg”:”api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]”}
原因:
①:你的服务号必须是通过腾讯认证,每年是300元,如果没有认证而导致的错误提示,那就去认证,别往下看了!如果你已认证,本条原因排除,那么请继续往下看
②:你是否是第三方网页,第三方网页的话,那么你的url地址里面的scope这个参数要填写”snsapi_userinfo”,否则会报这个错!原因如下!
URL地址:https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope={2}&state=ok#wechat_redirect

scope参数对应值的解释:
snsapi_base 不需要用户点同意,直接跳转到授权后的页面,只能用于获取openid,不能获取用户基本信息
snsapi_userinfo 会征求用户同意,授权后,可以获取用户基本信息

需要snsapi_userinfo 的授权域,不然就会拿不到头像啦



  • 问题三 机械返回的问题

当微信回调地址拼上code参数之后,就会用code拿到头像,但是如果我们点进下一个链接,然后在通过手机返回之前拼接的code页面之时,那个连接的code 则会失效,则我们需要重新获取认证

           if(isset($wx_arr['errcode'])){  //当手机机械按钮返回的时候code已经使用过会出现报错  需要重新拿code <br>
            $return_url = '/wap/activityhelp-1.html?uid='.$_GET['uid'].'&amp;model='.$_GET['model']; <br>
            $return_url = 'http://'.$_SERVER['HTTP_HOST'].$return_url; <br>
            if($_GET['time']) { <br>
                $return_url = $return_url.'&amp;time='.$_GET['time']; <br>
            } <br>
            $appId_to_get_code = trim($wxpayjsapi_conf['setting']['appId']); <br>
            $wechat_object->get_code($appId_to_get_code, $return_url); <br>
        }</li>
</ul>
2017-01-16 15:56:07 qq_25032257 阅读数 111
  • asp获取微信公众号网页授权和用户信息(code、access_...

    讲解用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。 获取code、access_token、openid、用户昵称、地区、性别、头像等 官方文档 https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Web_Developer_Tools.html#1 开发步骤 1、引导用户进入授权页面同意授权,获取code 2、通过code换取网页授权access_token(与基础支持中的access_token不同) 3、如果需要,开发者可以刷新网页授权access_token,避免过期 4、通过网页授权access_token和openid获取用户基本信息(支持UnionID机制) asp获取微信公众号网页授权和用户信息(code、access_token、openid等) 01-asp获取微信公众号网页授权和用户信息演示 02-asp获取远程网页内容 03-官方文档概要 04-获取用户同意授权 05-拿到code后获取返回信息 06-获取access_token内容 07-获取微信用户openid数据 08-获取微信用户的所有信息 09-用户头像、昵称、区域、性别

    334 人正在学习 去看看 黄菊华

        在开发微信时,都有这么一个问题,如何获取当前用户的信息,比如头像、昵称、性别等等。当获取到这些时,我们可以就可以将用户信息存储到数据库,完成用户的注册。那么在微信客户端如何获取用户信息呢?在微信开发者文档中https://mp.weixin.qq.com/wiki/1/8a5ce6257f1d3b2afb20f83e72b72ce9.html可以看到,获取用户信息需要两个条件,1是access_token,2是openid,'access_token'如何获取在文档中有详细介绍,主要是openid如何获取。

      openid获取有两种方式:一是在微信公众号收到消息的xml数据中的FromUserName,另一种是通过网页授权方式获取。

获取用户信息只有在认证的订阅号和认证的服务号上被授权,才能获取到用户信息,如果不是这两种方式。对不起,不能获取用户信息。

2017-07-12 18:57:14 dsj15831653282 阅读数 918
  • asp获取微信公众号网页授权和用户信息(code、access_...

    讲解用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。 获取code、access_token、openid、用户昵称、地区、性别、头像等 官方文档 https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Web_Developer_Tools.html#1 开发步骤 1、引导用户进入授权页面同意授权,获取code 2、通过code换取网页授权access_token(与基础支持中的access_token不同) 3、如果需要,开发者可以刷新网页授权access_token,避免过期 4、通过网页授权access_token和openid获取用户基本信息(支持UnionID机制) asp获取微信公众号网页授权和用户信息(code、access_token、openid等) 01-asp获取微信公众号网页授权和用户信息演示 02-asp获取远程网页内容 03-官方文档概要 04-获取用户同意授权 05-拿到code后获取返回信息 06-获取access_token内容 07-获取微信用户openid数据 08-获取微信用户的所有信息 09-用户头像、昵称、区域、性别

    334 人正在学习 去看看 黄菊华

进行微信开发,业务需要,我们会获取用户的头像、openid、具体的身份信息等
简单介绍几个常用的比较容易混淆的id:
openid:每一个用户关注一个公众号就有一个openid
appid:就像QQ号一样,每一个公众号也有自己的号码,就是appid
appSecret:每一个账号对应一个密码,如果说appid是账号的的话,secret就是对应的密码。
unionid:一个用户关注了不同的公众号,openid是不同的,但是unionid唯一。
accessToken有两种:一种是使用AppID和AppSecret获取的access_token为全局Access Token,一种是OAuth2.0授权中产生的access_token 为授权Access Token
获取用户信息使用的是 通过OAuth2.0方式不弹出授权页面获得用户基本信息
通过 appid ,appSecrete,code获取 openid

 "https://api.weixin.qq.com/sns/oauth2/access_token?appid="+appid+"&secret="+secret+"&code="+code+"&grant_type=authorization_code", json.toString()   

结果为:

{"access_token":"VVra6NbpU03Hds4p5DJxPrOGqaizLAz9JWw5faiB1wW_fqTazeln_OENGPAcwLP67KOnjsrX5nTBRYMaL42G3ES5VDNAPX980F4AoK1Obw",
"expires_in":7200,
"refresh_token":"tNvTHqoxSqVpEmcjrwvs-r1kkzqSSVdOCAT9DEhaFceLPa2wphtQy2RfrIMAAn63J-FriUoAHBj_WmuC5wV7-ddkJ6rY08PxD9oUL2HFA-A",
"openid":"oe8qawbvhbUHoW43_480YIstu97w",
"scope":"snsapi_base",
"unionid":"oguLawlIHNnK0MGg7-BYhNgQYRww"}

这里会产生一个accessToken,这里的accessToken是授权token
在这里我使用的是全局token,通过appid和APPSecret获取
我们通过openid和access_token我们可以获取用户信息:

String result = HttpUtils.postJsonRequest("https://api.weixin.qq.com/cgi-bin/user/info?access_token="+accessToken+"&openid="+openid+"&lang=zh_CN", json.toString());

通过openid和accessToken可以获取用户信息

{"subscribe":1,
"openid":"oe8qawbvhbUHoW43_480YIstu97w",
"nickname":"安晴",
"sex":1,
"language":"zh_CN",
"city":"",
"province":"",
"country":"",
"headimgurl":"http://wx.qlogo.cn/mmopen/ty3pjfnjh620icJbDia5icTwQSziadlAwLpPbaNaGPQmXCoeqNlSKJyRiadBgHHTRic27WGpkdpgKwfylqusetHavZQ/0",
"subscribe_time":1433719915,
"unionid":"oguLawlIHmmK0MGg7-BYhNgQYRww",
"remark":"",
"groupid":0,"tagid_list":[]}

微信开发之入门教程

阅读数 13859

没有更多推荐了,返回首页