小程序如何生成openid、unionid,thinkphp后台

442 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 UnionID机制说明 如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过UnionID来区分用户的唯一性 因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的UnionID是唯一的。 换句话说,同一用户,对同一个微信开放平台下的不同应用,UnionID是相同的。

UnionID获取 1、通过wx.login等接口 (1)调用wx.login()获取临时登录凭证code,并回传到开发者服务器。 (2)调用auth.code2Session接口,换取用户唯一标识OpenID、用户在微信开放平台帐号下的唯一标识UnionID(若当前小程序已绑定到微信开放平台帐号)和会话密钥session_key 即改接口:GET api.weixin.qq.com/sns/jscode2…

2、云函数
    小程序端调用云函数时,可在云函数中通过Cloud.getWXContext获取UnionID
    
3、通过支付接口
    用户在小程序(暂不支持小游戏)中支付完成后,开发者可以直接通过getPaidUnionId接口获取该用户的UnionID
        注意:本接口仅在用户支付完成后的5分钟内有效,请开发者妥善处理。

UnionID典型使用场景及案例 (1)使用记录同步: 用户在多端的浏览记录、购买历史、收藏夹等信息可便捷同步,并提供个性化服务。

(2)用户信息维护:
    如会员卡积分、收货地址等信息,用户无需重新输入信息,降低使用成本,提升转化率。
    如某服饰行业小程序,提供手机号一键快捷登录方式,可自动拉取用户在微信中的默认手机号码,避免再次填写。

UnionID使用建议 (1)在必须用到登录信息的环节引导用户登录 在用户必须登录时才引导用户登录(如:购买前需要获取会员信息,用于同步积分数据),而不是用户一进入小程序就弹窗要求用户授权。 如只需要在前端展示用户头像、昵称,无需要求用户授权,可直接展示。

(2)清晰、准确地引导用户登录
    在登录页面中,清晰、准确地告知用户当前操作是登录,说明获取登录信息的目的(如:用于同步会员积分数据等)。

(3)不强制用户必须登录后才能使用小程序服务
    提供游客模式,不强制用户必须登录后才能进入小程序。如要求必须授权头像昵称等信息才能继续使用小程序,会导致某些用户放弃使用该小程序。

好了理论说的不少,具体实现看代码: 1.小程序获取code

      success(res){
        var code = res.code;
         wx.request({
              url: 'https://********',//你的接口
              data: {
                code: code
              },
              method: 'POST',
              header: {
                'content-type': 'application/json' // 默认值
              },
              success(res) {
                //res返回你需要unionid
              }
            })
          }
      }
    });
  },

2.php后台代码实现

    protected $appid = "********";//小程序appid
    protected $secret = "*********";//小程序秘钥
    protected $url = "https://api.weixin.qq.com/sns/jscode2session";    
    /*
     * 获取unionid
     */
    public function getUserUnionid($code =''){
        $url_token = "";
        $url_token = $url_token  . $this->url;
        $url_token = $url_token  . "?appid=".$this->appid."&secret=".$this->secret;
        $url_token = $url_token  . "&js_code=".$code;
        $url_token = $url_token  . "&grant_type=authorization_code";
        $return_token = "";
        $return_token = file_get_contents($url_token);
        $data = json_decode($return_token);
        return $data;
    }
 
    //随便写个调用方法,你们根据自己的需要调用就行
    public function test(){
        $code = input('code');//小程序传过来的
        $data = $this->getUserUnionid($code);
        $unionid = $data->unionid;//获取到了
    }
    
    

是不是很简单,老七写东西都是这么简单,如果有需要的朋友或者不明白,可以随时留言问老七!