请问当一个用户点链接进入分享出去的直播间时,如何拿到openid?
发布于 6 年前 作者 wei01 4940 次浏览 来自 问答

微信直播的研发人员您们好,我司小程序有幸得到了测试资格,这几天写了几个demo,发现有一个问题无法解决,所以想来请教下。

当使用live-player-plugin组件时,用户在直播间可以直接点右上角的分享把这个直播间分享出去。我用复制页面路径功能查看到这个分享出去的直播间链接里是带了分享人的openid的。形式大概是: __plugin__/wx2b03c6e691cd7370/pages/live-player-plugin.html?room_id=9&type=1&openid=***&close_picture_in_picture_mode=false

但是当有人通过这个链接直接进入直播间时,我没办法拿到这个openid。理论上这个参数该在对应page的onLoad里拿,但是页面是你们插件内部的,App里也没有办法去hook其他page的onLoad。我尝试在App.onShow里查看query,是没有参数的,所以我不知道该如何取这个openid。我也查看了开发文档,目前并没有暴露取这个的接口。

另外我注意到在新版里,点击商品链接会带上room_id,这是一个很好的改动,让商品能和主播建立联系。但是在很多场景里,我们同样也希望分享者和主播和商品都建立联系,我想你们在分享链接里带上openid也是出于这个考虑。可是开发者却取不到这个openid。

所以我想问问:

1 是不是有获取这个openid的接口和方法只是我不知道,请指点一下谢谢。

2 如果没有,能不能提供一个这样的功能,或者在点击商品链接时把这个直播间的分享者的openid也带上。

3 如果出于openid的敏感性考虑不提供这样的功能,能不能提供一个可以在后台换取用户身份的类似的token?

4 如果以上说的都不行,微信直播这个组件从一开始设计就是不希望开发者取到分享直播间的人的信息,能不能说明一下,这对我司接下来的业务模式有较大影响,如果不行我们就早点死心寻找其他做法。

字打的有点多,感谢耐心看完,望早日回复。

3 回复

我们看下。

/**
 * 这个示例将经自动鉴权过的小程序用户 openid 返回给小程序端
 * 
 * event 参数包含小程序端调用传入的 data
 * 
 */
exports.main = (event, context) => {
  console.log(event)
  console.log(context)

  // 可执行其他自定义逻辑
  // console.log 的内容可以在云开发云函数调用日志查看

  // 获取 WX Context (微信调用上下文),包括 OPENID、APPID、及 UNIONID(需满足 UNIONID 获取条件)等信息
  const wxContext = cloud.getWXContext()

  return {
    event,
    openid: wxContext.OPENID,
    appid: wxContext.APPID,
    unionid: wxContext.UNIONID,
    env: wxContext.ENV,
  }
}
  1. 带 shareTicket 的转发
  2. 用云函数可以取到用户openid

以上仅参考.

回到顶部