Апплетов развития навыков (с) - Облако развития обновления и своевременность хранения данных (access_token и т.д.)

Апплет обновления развития облака и своевременность хранения данных (access_token и т.д.)

1. Описание проблемы

Апплеты часто имеют необходимость распознавания OCR, или с помощью внешнего API, например интерфейсов распознавания Baidu AI, эти интерфейсы требуют запроса маркеров вызова, то есть, количество данных, чувствительных к времени. В данной работе, небольшая программа, разработанная с использованием интерфейса API Baidu Cloud в качестве примера, access_token регулярно обновляется и механизм запроса.

Вот некоторые требуют назвать Baidu ID идентификации карты требуемых параметров пасс требует access_token.

Пример запроса

Методы HTTP:POST

Запрос URL: https://aip.baidubce.com/rest/2.0/ocr/v1/idcard

Параметры URL:

параметры значение
access_token Приобретенные через API Key и Secret Key access_token, ссылка « Маркер доступа получить »

access_token данных чувствителен ко времени, когда интерфейс на каждый запрос о проведении запроса обновления явно трата ресурсов компьютера, а также влияние эффективности.

2. Проблема Решение

2.1. Конфигурация Cloud Database

Создать новую базу данных под названием облако setConfig . В качестве базы данных для хранения информации типа конфигурации, данные могут быть похожи на access_token , сохраненной в нем.

Access_token конфигурации из следующих полей:

  1. _openid (ваш OpenID * Обязательно)
  2. config_name (имя конфигурации, заполнение access_token)
  3. значение (значение access_token, по умолчанию NULL)

Идентификатор генерируется автоматически настраивает следующий эффект (это значение является значение было обновлено)

Функция конфигурации облака 2.2 Сроки

Прочитайте документацию access_token приобретенных показывает, что мы должны обратиться с просьбой, чтобы получить значение access_token.

Get access_token

Формат URL данных Запрос

Авторизованный адрес службы для https://aip.baidubce.com/oauth/2.0/tokenотправки запросов (рекомендуется POST), и привести следующие параметры в URL:

  • grant_type: обязательные параметры, фиксированные client_credentials;
  • client_id: 必须参数,应用的API Key
  • client_secret: 必须参数,应用的Secret Key

例如:

https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=Va5yQRHlA4Fq5eR3LT0vuXV4&client_secret=0rDSjzQ20XUj5itV6WRtznPQSzr5pVw2&

实现

我们需要在云函数中模拟请求,并根据返回结果刷新云数据库中的access_token值。

想要运行通过该程序,需要开发者自己去百度创建账号并创建应用。

云函数index.js

// 云函数入口文件 index.js
const cloud = require('wx-server-sdk')

cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})
const db = cloud.database()
var request = require('request')
// 定时器
exports.main = async(event, context) => {
  const appkey = '填写你的百度AppKey';
  const appsecret = '填写你的百度AppSecret';
  var url = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + appkey + '&client_secret=' + appsecret;
  return new Promise((resolve, reject) => {
    request({
      url: url,
      method: "POST",
      json: true,
      headers: {
        "content-type": "application/json",
      },
    }, function(error, response, body) {

      if (!error && response.statusCode == 200) {
        console.log('通行证为' + body.access_token)
        resolve(body.access_token)
          //记得修改.doc('xxx') 中的内容
        db.collection('setconfig').doc('aaaf5a56-1dd9-4e50-974b-34688fa47b20').update({
          data: {
            value: body.access_token
          }

        }).then(res => {
          console.log('调用完成')
          console.log(res)
        })
      }
    })
  })
}

docid是setconfig生成的,每个人不同注意修改

还有一种更新写法,不过更推荐使用上面的方法,效率更高,且稳定。

db.collection('setconfig').where({
    config_name:'access_token'
}).update({
 data: {
      value: body.access_token
    }
})

云函数config.json(定时触发器功能实现)

{
  // triggers 字段是触发器数组,目前仅支持一个触发器,即数组只能填写一个,不可添加多个
  "triggers": [
    {
      // name: 触发器的名字,规则见下方说明
      "name": "myTrigger",
      // type: 触发器类型,目前仅支持 timer (即 定时触发器)
      "type": "timer",
      // config: 触发器配置,在定时触发器下,config 格式为 cron 表达式,
      //现在为每天凌晨两点触发
      "config": "0 0 2 * * * *"
    }
  ]
}

云函数整体结构为:

然后上传并部署(云端安装依赖)。

2.3 小程序端获取Access_token

在小程序进入相应界面的时候,请求云数据库,获取access_token

onLoad: function (options) {
    //页面初始化
    var that = this;
    db.collection('setconfig').where({
      config_name:'access_token'
    }).get({
      success(res){
        that.setData({
          access_token:res.data[0].value
        })
        //console.log(res.data[0])
      },
      fail(res){
        wx.showToast({
          title: '请求失败,无法通过扫描填充数据',
        })
      }
    })
  },

3. 参考资料

[1]百度AI鉴权认证机制

[2]微信小程序云开发数据库update函数更新不了数据的问题

[3]小程序云开发定时触发器

小程序开发相关问题欢迎联系QQ 1025584691

рекомендация

отwww.cnblogs.com/masterchd/p/12431426.html