# 小程序获取wxcode
微卡提供两种方法获取用户wxcode
方式一为插件形式,通过集成小程序插件,使用其中的选择主体、login组件获取用户wxcode
方式二为跳转附带wxcode,用户在微卡小程序跳转至业务小程序时,会在extraData附带该用户的wxcode(前提是需要用户从微卡小程序跳转到业务小程序才会附带)
# 一. 引入小程序插件(方式一)
# 1 . 1 申请插件
小程序开发者可以在"小程序管理后台-设置-第三方服务-插件管理"中查找 wx1549b963bbae9931(微卡小助手)插件,并进行申请。在发起申请 24 小时内,微卡会根据应用的资质进行审核。
# 1 . 2 引入插件
在 app.json 中声明需要使用的插件
{ "plugins": { "myPlugin": { "provider": "wx1549b963bbae9931", "version": "4.0.1" } } }
plugins字段
可以定义多个插件声明myPlugin字段
由开发者自行定义,无需与微卡保持一致。 需指明插件的 version(当前版本号:4.0.1)和 provider(插件提供方:wx1549b963bbae9931)在使用的页面的 json 文件(如 index.json)中引用自定义组件
{ "usingComponents": { "choose": "plugin://myPlugin/choose", "login": "plugin://myPlugin/login" } }
usingCompoents
表示需要使用插件choose
表示在页面中使用选择主体组件
的标签plugin://myPlugin/choose
表示引用 myPlugin 插件中的选择主体组件
login
表示在页面中使用登录组件
的标签plugin://myPlugin/login
表示引用的 myPlugin 插件的登录组件
# 2 使用插件获取 wxcode
# 2 . 1 使用组件
<login
ocode="{{ocode}}"
appkey="{{appKey}}"
scope="snsapi_userinfo"
name="{{name}}"
visible="{{visible}}"
bind:success="callback"
bind:cancel="callback"
bind:fail="callback" />
参数 | type | 必填 | 说明 |
---|---|---|---|
ocode | string | 是 | 主体代号 |
appKey | string | 是 | 应用 AppKey |
scope | string | 否 | oauth scope |
name | string | 否 | 名称标识 |
visible | boolean | 否 | 是否可见 |
# 2 . 2 回调事件
应用调起小程序插件的登陆组件,用户确认授权或取消后,会触发对应事件,交由小程序端的事件处理函数来进行处理。
成功回调 (success)
callback: function({ detail }) { const { wxcode = "" } = detail // do something }
参数 说明 event.detail.wxcode oauth2.0 code
# 3 通过插件选择主体
小程序允许提供给多个主体使用 当用户首次进行入小程序时,小程序应该主动拉起小程序插件中的选择主体组件,在用户选择完主体后,应当记录用户的选择,避免让用户重复选择
# 3 . 1 使用组件
<choose
appkey="{{appkey}}"
bind:onChange="callback"
bind:cancel="callback"
bind:fail="callback" />
参数 | type | 必填 | 说明 |
---|---|---|---|
appkey | string | 是 | 应用 AppKey |
# 3 . 2 回调事件
应用调起小程序插件的选择主体组件,用户选择主体或取消后,会触发对应事件,交由小程序端的事件处理函数来进行处理,处理完成后应当主动隐藏选择主体组件
选中回调 (onChange)
callback: function({ detail }) { const { ocode = "", name = "" } = detail // do something }
参数 说明 event.detail.ocode 主体代号 event.detail.name 主体名称
# 3 . 3 导出方法
show(name?: string): void
展示对应的授权对话框
示例:
<choose
appkey="{{appkey}}"
bind:onChange="onChange"/>
<login
ocode="{{ocode}}"
appkey="{{appKey}}"
bind:success="success" />
const { show } = requirePlugin("myPlugin");
Page({
data: {
appkey: "xxxxxxxxxxxxxxxx",
ocode: "",
},
onChange: function({ detail }) {
const { ocode = "" } = detail;
this.setData({ ocode });
show();
},
success: function({ detail }) {
const { wxcode = "" } = detail;
// do something
},
});
# 二. 小程序跳转附带wxcode(方式二)
# 1 . 1 可参考小程序跳转wx.navigateToMiniProgram (opens new window)
跳转附带wxcode,用户在微卡小程序跳转至业务小程序时,会在extraData附带该用户的wxcode(前提是需要用户从微卡小程序跳转到业务小程序才会附带)
# 1 . 2 调试可在编译工具模拟对应场景
调试时可在小程序编译选项,选择小程序进入场景,以及设定附带参数