收藏
回答

小程序为什么不直接在前端获取到 openId?

目前小程序是通过 wx.login 获取的 code, 然后通过 code 与后台交互, 通过 appId + appSecret + code 获取 openID

就 openId来讲, 微信客户端应该能直接做到通过 code + 小程序标识 来获取openId, 为什么还要通过服务端

我目前想到的一个原因是 "服务端拥有登录态" , 是否还有其他原因

回答关注问题邀请回答
收藏

4 个回答

  • 陕西破折号
    陕西破折号
    03-05

    为了安全起见,小程序域名不能配置成api.weixin.qq.com,所以前端调不了接口。

    03-05
    有用
    回复
  • Wkiwi
    Wkiwi
    03-05

    保存在前端???铭感信息 存前端??

    03-05
    有用
    回复 5
    • 刘恩德
      刘恩德
      03-05
      openId 不算敏感信息吧
      03-05
      回复
    • Wkiwi
      Wkiwi
      03-05回复刘恩德
      因为 小程序的前端代码是可扒下来的,如果单纯的前端可以拿到openid,我下载你的代码,伪造用户openid,批量跑你接口
      03-05
      回复
    • Wkiwi
      Wkiwi
      03-05
      openid单纯的存在前端么任何问题,如果你还要前端带openid去鉴别用户身份,这个风险就太大了
      03-05
      1
      回复
    • 刘恩德
      刘恩德
      03-05
      你好, 我不是这个意思, 微信客户端也通过 code + 小程序标识 来获取openId
      03-05
      回复
    • |G.XIAO|
      |G.XIAO|
      03-05
      我来说一下我的理解吧。
      1.openId 是微信开发平台下的每个应用的用户唯一标识,比如小程序和公众号(同一个用户的openId是不同的,但是可以通过unionid来标识标识为同一个用户)
      2.技术上是可以实现 前端通过 code + 小程序标识,来换取openId,这样就相当于拿到了应用的用户标识,其他开发者可能会把 openId作为自己应用的唯一标识,对于正常使用者,没啥风险。但是网络上未必都是正常的开发者,安全漏洞无处不在,这样任何一个非法制就能绕开拿到用户唯一标识,潜在分享风险非常大。
      3.通过代理码可以抓取到微信小程序的任何明文请求,如果有些系统没有处理安全漏洞问题,如果前端就能获取到openid,无疑又一次放大了风险
      4.如果通过服务器解密获取openId,之前增加了获取openId的难度,降低了风险。


      都是出于安全考虑和之前的设计考虑的。


      未来可能也会放开,之前通过 code + 小程序标识无法获取unionid,但现在就可以。


      没有什么是不变的,只是当前这样成本更低,更适合而已
      03-05
      1
      回复
  • 跨商通
    跨商通
    03-04

    一直就是前端保存的飘过。

    03-04
    有用
    回复 1
    • 刘恩德
      刘恩德
      03-05
      一般都这么处理, 我没想通的是为什么 wx.login 直接获取 openId
      03-05
      回复
  • |G.XIAO|
    |G.XIAO|
    03-04

    我能想到的是安全机制考虑

    03-04
    有用
    回复 1
    • 刘恩德
      刘恩德
      03-05
      能具体点吗
      03-05
      回复
登录 后发表内容
问题标签