小游戏获取openid问题
发布于 5 年前 作者 vmeng 11676 次浏览 来自 问答

小游戏希望能够在客户端拿到用户的openid, 哪怕是在开放域也行, 现在遇到了问题.

微信官方文档是建议, 部分用伪代码

wx.login()

{

    success(res) => {

        var code = res.code;

        //参考以下结构来构建url

GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

        var url = getUrlBy(code, appid, appsecret);

        //使用url来获得user open id

        wx.request({url: url, method: GET})

    }}

事实上wx.request()这个地址无法在客户端执行, 查了一下文档是需要在一个服务器上来请求, 那么我现在的问题在于如果没有自己的服务器, 是不是没有办法知道用户自己的唯一身份标识?

我需要做排行榜的时候有一个唯一标识来知道哪一条成绩记录是自己的, 然后做高亮或者特殊显示用.

6 回复

我也遇到这个问题了,本以为在开发数据域使用selfOpenId来拿到openid,结果返回的还是selfOpenId,也是无语了,不知官方咋想的

给个身份id也行啊,这个id不可以调取任何敏感信息,仅仅作为开发者识别身份的id。一个破ID,只能对应当前用户,而不可知当前用户的任何敏感信息。你们可以在后台写死,不许用户访问,读写这个id,仅仅作为用户数据返回的一个附加的identityID。

你好,是的,wx.request()的URL是开发者服务器的地址

可以用头像地址来判断哪一个是自己的,但是吧,如果自己和若干朋友没设置头像,头像的默认地址又一样了,糟心,为什么开放数据域也不能获得自己的openid   真是不可思议

用户授权后都不能获得openid,为什么?

本以为授权后可以获得,好不犹豫的就开是些流程了,到了拿openid的时候才知道不能获取openid。之前设计的流程有白做了。。

那到底要怎么样才能获得这么个破id呢???

不一定需要这样做。你可以在保存用户分数的时候加一个用户获得该分数的 millisecond 字段。然后在子域里面显示排行榜的时候根据这个 millisecond 来匹配排行榜当前用户。当然这个方法不是绝对可靠,但是总体而言,还可以。因为好友间相撞的概率比较低。

回到顶部