美文网首页征服iOS
获取微信小程序登录账号的openid方法

获取微信小程序登录账号的openid方法

作者: NextStack | 来源:发表于2017-05-26 11:57 被阅读0次

    参考文档

    https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html#wxloginobject

    原理分析

    我们在使用小程序wx.login API进行登录的时候,是不能获取更多的信息的,如openid。
    官方提示,需要发送获取到的code进行请求到微信的后端API,才能正确获取更多信息,这也许是为了安全起见吧。
    但是我们很多时候,都要求判断登录的用户是不是唯一的,这也就需要使用微信账号唯一的openid来验证了。

    不多说,根据文档,得出,只需要进行一个get请求到如下地址即可:
    https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

    appidsecret在微信小程序后台可以看到,js_code为使用wx.login登录时获取到的code参数数据,grant_type这个不用改动。

    所以,我们直接来实现吧!

    简单实现

    这里,我使用Parse.Cloud脚本来实现,具体的其他代码,自行参考:

    const APPID = "自行修改";
    const SECRET = "自行修改";
    
    Parse.Cloud.define('getOpenId', (req, res) => {
      const { code } = req.params;
      if (!code || (typeof code !== 'string') || code.length !== 32) {
        return res.error({
          message: 'code格式不正确',
          result: false
        })
      }
      Parse.Cloud.httpRequest({
        url: `https://api.weixin.qq.com/sns/jscode2session?appid=${APPID}&secret=${SECRET}&js_code=${code}&grant_type=authorization_code`,
        success: (_) => {
          const { data } = _;
          if (data.errcode) {
            return res.success({
              result: false,
              error: data,
              message: '获取失败'
            })
          }
          res.success({
            result: _.data,
            message: '获取成功'
          });
        },
        error: (_) => {
          res.success({
            result: false,
            error: _,
            message: '获取错误'
          })
        }
      })
    });
    

    然后前端(也就是微信小程序里边),直接把code参数传入即可:

    Parse.Cloud.run('getOpenId', {
      code: "003Vq34S115jF91vhi4S1Cn14S1Vq333"
    }, (ret) => {
      console.info(ret)
    });
    

    相关文章

      网友评论

        本文标题:获取微信小程序登录账号的openid方法

        本文链接:https://www.haomeiwen.com/subject/rzntfxtx.html