前几天做的一个项目,微信助力活动,需要获取微信用户的头像,然后存表,在获取微信头像的时候,遇到了两个问题,可能很普通的问题,解决起来也很好解决!
- 问题一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_redirectscope参数对应值的解释:
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'].'&model='.$_GET['model']; <br> $return_url = 'http://'.$_SERVER['HTTP_HOST'].$return_url; <br> if($_GET['time']) { <br> $return_url = $return_url.'&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>