征服iOS

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

2017-05-26  本文已影响0人  NextStack

参考文档

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)
});
上一篇下一篇

猜你喜欢

热点阅读