解决小程序获取openid报错errcode:48001或者其他错误代码方案

解决小程序获取openid报错errcode:48001或者其他错误代码方案

原因解析

获取openID,调用的时候发现总是报错尤其是
errcode: 48001, errmsg: "api unauthorized错误,
首先可以肯定和api没有授权的没有多大关系,

微信调用获取openID的url有以下三种

1$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appsecret&code=$code&grant_type=authorization_code";
2$url = "https://api.weixin.qq.com/sns/oauth2/component/access_token?appid=$appid&secret=$appsecret&code=$code&grant_type=authorization_code";
3$url = "https://api.weixin.qq.com/sns/jscode2session?appid=$appid&secret=$appsecret&js_code=$code&grant_type=authorization_code";

解决方案

公众号appid获取微信openid

 //公众号appid获取微信openid 
public static function getOpenidData($wechat_info, $code)
    {
//https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
		$weixin_url = "https://api.weixin.qq.com/sns/oauth2/access_token";
        $weixin_url_new = $weixin_url . '?appid=' . $wechat_info['appKey'] . '&secret=' . $wechat_info['appSecret'] . '&code=' . $code . '&grant_type=authorization_code';    
        $weixin_data = file_get_contents($weixin_url_new);
        $result = json_decode($weixin_data, true);
        return $result;
}

小程序appid获取微信openid

//获取微信信息,session_key 和 openid
 public static function getweixindata($appid, $secret, $js_code)
    {
        $weixin_url = "https://api.weixin.qq.com/sns/jscode2session";
        //https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
        $weixin_url_new = $weixin_url . "?appid=$appid&secret=$secret&js_code=$js_code&grant_type=authorization_code";
        $weixin_data = file_get_contents($weixin_url_new);
        $result = json_decode($weixin_data, true);
        return $result;
}
微信小程序获取用户的openid时遇到错误41008通常表示“用户未授权”,这意味着你在尝试访问用户信息前,没有在app.json文件中配置相应的权限请求,或者用户在使用你的应用时没有给予必要的授权。解决这个问题需要按照以下步骤操作: 1. **检查权限配置**:确保在`app.json`文件的`permission`属性下,包含了获取用户OpenID的权限,例如: ```json { "pages": [...], "permission": { "scope.userInfo": { "desc": "用于获取用户的基本信息" } }, ... } ``` 2. **提示用户授权**:在需要获取用户信息的页面,通过`wx.authorize`函数引导用户去设置中心授权,然后才能继续。 3. **处理授权回调**:在`onLoad`或`onShow`生命周期钩子里,检查用户是否已经授权,如果没有则发起授权请求: ```javascript onLoad: function(options) { wx.getSetting({ success(res) => { if (!res.authSetting['scope.userInfo']) { wx.authorize({ scope: 'scope.userInfo', success() { // 用户授权成功后,可以再次尝试获取openid this.getUserInfo(); }, fail(err) { console.error('用户不允许获取个人信息', err); } }); } else { this.getUserInfo(); } } }); }, ``` 4. **错误处理**:确保在获取openid的过程中有适当的错误处理机制,以便于记录日志并提供给用户友好的反馈。 如果以上步骤都已正确执行但仍遇到该问题,可能是微信SDK版本过旧或网络异常,建议更新到最新版的小程序开发者工具,并检查网络状况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值