小程序开发总结(含真机调试问题~)

本文涵盖小程序开发中常见的五大问题及其解决方案,包括真机调试数据获取、JSON格式处理、curl_init()错误、用户授权及token机制。针对各问题提供详细步骤,如服务器配置调整、代码修改建议及权限管理策略,帮助开发者高效解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1. 真机调试获取不到数据

问题描述:在模拟器上可以获取到数据,但是在真机调试获取不到数据

解决:配置服务器request合法域名

并且一定要记得取消勾选不校验合法域名

 

2.服务器api返回的json字符串前面多了个空格

问题描述:真机能够获取到了数据,但是返回的json字符串前面多了个空格

原因:服务器有文件格式是utf-8 with bom ,应改成utf-8 无 bom,可用notepad++ 处理。且要记得不要用记事本修改服务器代码/配置文件,会改成有BOM底的。

解决:

法一:(从客户端解决,但是不治本,不推荐)

您可以判断 typeof res,如果是字符串则尝试 JSON.parse(res.replace(new RegExp('\ufeff', 'ig'), ''))

("\ufeff"表示非法字符)

 

法二:(从服务端解决,直接返回对象,治本)

修改服务器的默认打开为notepad++

在服务器里面根据最后修改时间判断哪些文件(包括配置文件)是经过windows的记事本修改的

并保存为utf-8无bom格式

 

3. 致命错误:Call  to undefined function curl_init()

首先使用phpinfo()查看一下你的curl库有没有打开(ctrl+f,有出现curl enabled即可)。如果没有的话,编辑php.ini文件。

 1.)phpinfo()里面没有curl,

mydomain/info.php

(ubuntu需要安装php7.0-curl,前提:Php为7.0版本)

=> apt-get update

=> sudo apt-get install curl libcurl3 libcurl3-dev php7.0-curl

=> 重启apahce服务器。

=> 解决

 

如果没enabled,就是没加载上
sudo find / -name 'php.ini'  找到php.ini 文件在哪里
1、Windows下的PHP开启curl库支持: 

在/etc/php/7.0/apache2/php.ini
打开php.ini,将extension=php_curl.dll前的;号去掉。


2.保存之后还要重启apahce服务器。

 

 4.新版授权方式

 1. 用户授权   

<button
  wx:if="{{canIUse}}"
  open-type="getUserInfo"
  bindgetuserinfo="bindGetUserInfo"
  hidden="{{loadingHidden}}"
  class='onMiddle'
>
授权登录
</button>
<view wx:else>请升级微信版本</view>
data: {
    canIUse: wx.canIUse('button.open-type.getUserInfo')
}
bindGetUserInfo(e) {
    console.log(e.detail.userInfo);
}

 2.判断是否授权

// 查看是否授权
wx.getSetting({
    success(res) {
        if (res.authSetting['scope.userInfo']) {
            // 已经授权,可以直接调用 getUserInfo 获取头像昵称
            wx.getUserInfo({
                success(res) {
                    // console.log(res.userInfo)
                    that.setData({
                        userInfo: res.userInfo,
                        loadingHidden: true
                    });
                }
            })
        }
    }
})

 

 

5.小程序的token机制

问题描述:小程序能获取code, openid, secret, =>token,但是token老是校验失败,返回信息"Token过期或失效"?

原因:断点调试服务器,发现token没有发送到服务器上

解决:重构request方法,在header:{token} 携带token

 

自定义登陆态是服务器上将openid 与 session_key 关联起来的(进行hash算法)得到的唯一的token,在服务器中缓存下来并且返回给客户端

 

持续更新中~

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值