网站程序添加授权-# 方式二:云端调用直接获取开放数据

服务器获取开放数据

小程序可以通过各种后端socket获取陌陌提供的开放数据。 考虑到开发者服务器也需要获取此类开放数据,微信提供了两种获取方式:

方法一:开发者后台标定、开放数据揭秘

微信将对这些开放数据进行签名和加密。 开发者后台收到开放数据后,可以对数据进行校准、签名和解密,确保数据不被篡改。

签名校准和数据解密涉及到用户的会话密钥session_key。 开发者应提前通过wx.login登录过程获取会话密钥session_key,并保存在服务器上。 为了不篡改数据,开发者不要将session_key传递给小程序客户端等服务器外部的环境。

数据签名校准

为了保证open socket返回的用户数据的安全,微信会对明文数据进行签名。 开发者可以根据业务需求对数据包进行签名和校准,保证数据完整性。

通过调用socket获取数据时(如wx.getUserInfo),接口会同时返回rawData和signature,其中signature = sha1( rawData + session_key ) 开发者将signature和rawData发送到开发者服务器进行校准。 服务器使用相同的算法与用户对应的session_key估计签名signature2网站程序添加授权,并比较signature和signature2来校准数据的完整性。

比如wx.getUserInfo的数据标定:

接口返回的rawData:

{
  "nickName": "Band",
  "gender": 1,
  "language": "zh_CN",
  "city": "Guangzhou",
  "province": "Guangdong",
  "country": "CN",
  "avatarUrl": "http://wx.qlogo.cn/mmopen/vi_32/1vZvI39NWFQ9XM4LtQpFrQJ1xlgZxx3w7bQxKARol6503Iuswjjn6nIGBiaycAjAtpujxyzYsrztuuICqIM5ibXQ/0"
}

用户的会话密钥:

HyVFkGl5F5OQWJZZaNzBBg==

用于签名的字符串是:

{"nickName":"Band","gender":1,"language":"zh_CN","city":"Guangzhou","province":"Guangdong","country":"CN","avatarUrl":"http://wx.qlogo.cn/mmopen/vi_32/1vZvI39NWFQ9XM4LtQpFrQJ1xlgZxx3w7bQxKARol6503Iuswjjn6nIGBiaycAjAtpujxyzYsrztuuICqIM5ibXQ/0"}HyVFkGl5F5OQWJZZaNzBBg==

使用sha1得到的结果是

75e81ceda165f4ffa64f4068af58c64b8f54b88c

加密数据解密算法

如果接口涉及敏感数据(如wx.getUserInfo中的openId、unionId),则接口的明文内容不会包含此类敏感数据。 如果开发者需要获取敏感数据,则需要对socket返回的加密数据(encryptedData)进行对称解密。 解密算法如下:

对称解密采用的算法为AES-128-CBC,数据填充为PKCS#7。 对称解密的目标密文是Base64_Decode(encryptedData)。 对称解密密钥aeskey = Base64_Decode(session_key),aeskey为16字节。 对称解密算法的初始向量是Base64_Decode(iv),其中iv由数据套接字返回。

微信官方提供了多种编程语言的示例代码(点击下载)。 每种语言类型的套接字名称都是相同的。 调用方法可以参考示例。

另外,为了校准应用中数据的有效性,会在敏感数据上添加数据水印(watermark)

水印参数说明:

参数类型说明

应用程序标识符

细绳

敏感数据属于appId,开发者可以校准该参数是否与自己的appId一致

时间戳

INT

敏感数据采集时间戳,可供开发者进行数据时效性校准

例如socket wx.getUserInfo的敏感数据中的水印:

{
    "openId": "OPENID",
    "nickName": "NICKNAME",
    "gender": GENDER,
    "city": "CITY",
    "province": "PROVINCE",
    "country": "COUNTRY",
    "avatarUrl": "AVATARURL",
    "unionId": "UNIONID",
    "watermark":
    {
        "appid":"APPID",
        "timestamp":TIMESTAMP
    }
}

笔记:

解密后得到的JSON数据可能会根据需求减少新数组,旧数组不会被改变或删除。 开发者需要为会话密钥session_key预留足够的空间

如果开发者遇到因session_key不正确导致签名或解密失败的情况,请注意以下与session_key相关的注意事项。

当调用wx.login时,用户的session_key可能会被更新,使旧的session_key失效(刷新机制有最小周期,如果同一用户在短时间内多次调用wx.login,并不是每次调用都会导致session_key 被刷新)。 开发者只有在明确需要重新登录时才调用wx.login,并及时通过code2Session接口更新服务器中存储的session_key。 微信不会告知开发者session_key的有效期。 我们会根据用户使用小程序的行为来更新session_key。 用户使用小程序的频率越高网站程序添加授权,session_key的有效期就越长。 当session_key失效后,开发者可以通过重新执行登录流程来获取有效的session_key。 使用socket wx.checkSession来校准session_key是否有效,防止小程序重复执行登录过程。 开发者实现自定义登录状态时,可以考虑使用session_key有效期作为自己的登录状态有效期,或者实现自定义时效策略。 方法二:通过云调用直接获取开放数据

如果接口涉及敏感数据(如wx.getWeRunData),则接口的明文内容不会包含此类敏感数据,但返回的socket会包含敏感数据对应的cloudID字段,并且可以通过cloud获取该数据功能。 完整流程如下:

1.获取cloudID

使用2.7.0以上版本的基础库,如果小程序开启了云开发,可以通过开放数据socket返回值中的cloudID字段获取(与encryptedData同级),cloudID有效期为5分钟。

2.调用云函数

网站程序添加授权-# 方式二:云端调用直接获取开放数据

调用云函数时,对于传入的data参数,如果有一个顶层数组,其值为wx.cloud.CloudID构造的CloudID,那么调用云函数时,这些数组的值会被替换为打开cloudID对应的数据,一次调用最多可以替换5个CloudID。

例子:

小程序获取到cloudID后发起调用:

wx.cloud.callFunction({
  name: 'myFunction',
  data: {
    weRunData: wx.cloud.CloudID('xxx'), // 这个 CloudID 值到云函数端会被替换
    obj: {
      shareInfo: wx.cloud.CloudID('yyy'), // 非顶层字段的 CloudID 不会被替换,会原样字符串展示
    }
  }
})

云函数接收到的事件示例:

// event
{
  // weRunData 的值已被替换为开放数据
  "weRunData": {
    "cloudID": "xxx",
    "data": {
      "stepInfoList": [
        {
          "step": 5000,
          "timestamp": 1554814312,
        }
      ],
      "watermark": {
        "appid": "wx1111111111",
        "timestamp": 1554815786
      }
    }
  },
  "obj": {
    // 非顶层字段维持原样
    "shareInfo": "yyy",
  }
}

如果cloudID无效或过期,则事件中获取的对象将是包含错误代码、错误消息和原始cloudID的对象。 过期cloudID交换结果示例:

// event
{
  "weRunData": {
    "cloudID": "xxx",
    "errCode": -601006,
    "errMsg": "cloudID expired."
  },
  // ...
}

翻译由微信翻译提供,仅供参考。 若中文版本与英文版本有任何不一致或差异,以中文版本为准。 翻译错误。

《海报BANNER》支持打开本小程序、第三方小程序、网页跳转等多种跳转形式。

“类别(二级)”可设置添加两级类别,包括最新、推荐、热门频道,提供多种选择。

“文件列表”显示不同格式的文档或云盘数据,点击可跳转至文件详情。

“分享赚积分”用户邀请1位好友可获得多少积分。

“智能客服”连接陌陌客服智能回复组件,实现自动回复程序付费下载网站,解放手掌

细节:

“内容详情”包括分享者、分享时间、分享文件等信息; 用户通过消耗积分查看文件

“喜欢/不喜欢”查看的用户可以通过喜欢和不喜欢来评论文件

“帮忙观看”智白邀请好友优惠价格获取积分或免费观看积分; 为当前文档和资料提供更多的曝光和下载机会

“查看弹幕”循环显示最近20个用户的下载记录;

「推荐列表」当前文档所在类别中最新上传的文件,增加曝光机会。

个人中心:

“基本信息”显示当前用户的头像、昵称、ID、会员等级等基本信息。

“激活/续费会员”平台可设置三个会员级别程序付费下载网站,不同会员级别可设置【上传文件权限】、【下载文件权限】、【上传文件获取奖励积分】、【下载文件会员折扣】和其他权限

“积分功能”显示与积分相关的相关功能,包括积分详情、积分套餐和购买记录

“权限显示”显示用户当前级别的权限列表

上传文件:

“格式选择”支持上传文件、压缩包和云盘选择

“文件描述”简要描述了当前文件所包含内容的详细信息

“类别选择”选择刘草所在的类别,支持二级分类

“释放积分”用户可以填写当前文件下载所需的积分,平台将根据用户等级分享给用户

“提交发布”提到发布需要在后台进行初步审核,审核通过后才会在平台上展示。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 网站程序 网站程序添加授权-# 方式二:云端调用直接获取开放数据 https://www.wkzy.net/game/136857.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务