文档中心 > 扩展应用

对接服务场景

更新时间:2025/02/28 访问次数:450

对接链路

小程序授权回调

注意:小程序授权回调,请务必code换token否则等于未授权。

案例填写https://www.baidu.com/?wd=hello

方式一

唤起小程序时(真机联调时), 会唤起授权弹窗

商家点击确认授权小程序时,平台后端会异步访问http url https://www.baidu.com/?wd=hello&code=rLVVxlAN7KdVxzaOK5exxxx6160&state=1212

方式二

说明:测试时使用。

开发测试时,可登录商家账号,然后手动拼接 url 放在浏览器访问https://oauth.taobao.com/tac/authorize?response_type=code&client_id=${appkey}&redirect_uri=${url}&state=test&view=web 需替换appkey 和正确的配置的回调url。

点击确认授权后 也会重定向访问 http url:https://www.baidu.com/?wd=hello&code=rLVVxlxxxxxxxx6160&state=1212

ISV 服务端可收到该 url 的 http 请求 可获取到 url 参数里的 code,然后 ISV 可使用 code 通过taobao.top.auth.token.create API获取 access_token(授权令牌)和授权的主子账号信息。

{
  "top_auth_token_create_response": {
    "token_result": "{\"w1_expires_in\":31466485,\"refresh_token_valid_time\":1663585353000,\"taobao_user_nick\":\"%Exxxx80%E**\",\"re_expires_in\":0,\"expire_time\":1695121354000,\"token_type\":\"Bearer\",\"access_token\":\"6201bxxxx89181\",\"taobao_open_uid\":\"AAEQ54xxxxxraBMS\",\"w1_valid\":1695121354243,\"refresh_token\":\"62f6339f91ecxxxx264181\",\"w2_expires_in\":0,\"w2_valid\":1663587153219,\"r1_expires_in\":31466485,\"r2_expires_in\":189684,\"r2_valid\":1663844553219,\"r1_valid\":1695121354243,\"taobao_user_id\":\"22xx1\",\"expires_in\":31466485}",
    "request_id": "x2degl8qzzy0"
  }
}

格式化如下

{
  "refresh_token_valid_time": 1728889926759,
  "parent_open_uid": "AAExxxxxraBMS",
  "expire_time": 1731481926759,
  "open_uid": "AAGm8Lxxxx1br0xx",
  "locale": "zh_CN",
  "user_nick": "%E6%xxxx%B701",
  "access_token": "6201bxxxx89181",
  "refresh_token": "5000xxxxbs3rLqx",
  "w1_valid": 1731481926759,
  "w2_valid": 1728891726759,
  "user_id": "221xxxx845",
  "parent_id": "221xxxx888",
  "parent_nick": "%E6xxxx",
  "r2_valid": 1729149126759,
  "r1_valid": 1731481926759,
  "sp": "tbUIC"
}

需要留存商家主子账号关系 及关键信息(open_uid - access_token - 过期时间)。

注意

1)新老授权的 授权域名不同,建议通过API调用获取(API测试工具),若要用curl需确保域名是新域名(tac)。

2)当用主账号授权时或子账号授权时,字段语义不同

3)明文中的 userId parentId 两个参数,后续将不会透出,请使用密文 open_uid、parent_open_uid对应其他平台的open_id、main_user_open_id等字段命名,值相同,可关联映射识别当前用户身份,若对授权有更多疑问,可参考授权说明

4)访问取消授权工具,然后用已有授权的(子)账号登录,然后去网页去取消当前(子)账号的授权

云环境开发

说明:小程序前端 HTTP 外发请求到外网 ISV 服务端,禁止使用云函数,共享资源池,各种使用有限制。

可查看淘宝服务小程序接入指南相关文档,文档中详细介绍了选型使用和常用功能的介绍,比如openid,授权等。同时也包含空应用创建流程【云资源部署在淘外】域名白名单外发请求。

外发 HTTP 请求-空应用

示例代码

说明

1)支付宝小程序访问外部服务时,在后台配置域名白名单或者IP白名单后,使用my.request发起请求,可以访问外部服务,淘小程序不支持直接使用my.request方式访问外部服务。

2)与外部服务的数据打通需要通过云网关,如果使用的是空应用,那么可以直接调用空应用的域名白名单,无需额外的申请。

//app.js文件初始化示例代码
import cloud from '@tbmp/mp-cloud-sdk';
cloud.init({
  //test、online
  env: 'test' 
}); 
App({
  cloud,  
  onLaunch(options) {
    //执行相关代码
  } 
});
----------------------------------
  //page调用接口的方法
  async httptest (){
  const {cloud} = getApp();
  try {
    const result = await cloud.application.httpRequest({
      //不需要完整域名,只需要接口访问路径即可
      'path' : '/miniapp/test', 
      'method':'POST',
      //POST请求需要指定下请求格式,只支持application/json。 如:"content-type":"application/json;charset=UTF-8"
      'headers':{ "Content-Type":"application/json;charset=UTF-8"},
      'params':{  "name":"cx",  "age": 18,  },
      'body':{  "xftest":"hhh",  "id":"1234",  },
      //对于一个小程序关联多个云应用的场景,调用非默认云应用,需要指定对应的云应用Id,超时时间单位ms
      'exts':{  
        "cloudAppId":"123" ,
        "timeout":100,
         //空应用调用需要填写该字段,包括协议头以及端口号(可省略),支持http、https
        "domain":"https://www.taobao.com"
      }  });
    console.log(JSON.stringify(result));
  } catch(e) {
    my.alert({
      content: 'error ' + e.message  
    });  
  } 
}

外发 HTTP 请求-获取系统参数

说明:通过外发 HTTP 请求获取系统参数,例如openUid

外发 HTTP 请求时, 可把小程序前端的上下文context 作为参数传出,如下图所示:

参数说明,如下图所示:

FAQ

关于此文档暂时还没有FAQ
返回
顶部