zoukankan      html  css  js  c++  java
  • [小程序]微信小程序登陆并获取用户信息

    1.小程序js端调用框架登陆API,获取到一个临时code,拿着这个code去调用自己的服务端接口

    2.在自己的服务器端,使用app_id app_secrect code可以获取到用户的openid,这个id是用户唯一的id并且不会改变,可以把这个id返回给小程序端
    小程序端本地保存openid

    3.获取用户信息很简单,并且不需要自己的服务器处理,只需要小程序端提供的API。
    前端页面wxml使用一个按钮,按钮里增加几个属性,就可以回调到小程序js部分的方法上,并且带着用户的个人信息,如昵称 头像等

    4.这个时候就可以把该用户的openid 和 昵称,头像,一块调用自己服务端接口,保存到数据库中

    index.js

    const app = getApp()
    
    Page({
      data: {
        openid:""
      },
      //按钮回调的方法
      getPerson:function(e){
        console.log(this.data.openid);
        console.log(e);
      },
      onLoad: function () {
        var self=this;
        wx.login({
          success(res) {
            //js调用登陆命令获取到code
            if (res.code) {
              //通过code调用自己服务接口获取到openid
              wx.request({
                url: 'https://api.sopans.com/third/wxOpenId.php',
                data: {
                  code: res.code
                },
                success:function(wxInfo){
                  console.log(wxInfo);
                  self.data.openid = wxInfo.data.openid
                }
              })
            } else {
              console.log('登录失败!' + res.errMsg)
            }
          }
        })
      },
    })

    index.wxml

    <button open-type="getUserInfo" bindgetuserinfo="getPerson">获取用户信息</button>
            $appid = ''; // 小程序APPID
            $secret = ''; // 小程序secret
            $code=$_GET['code'];
            $url = 'https://api.weixin.qq.com/sns/jscode2session?appid=' . $appid . '&secret='.$secret.'&js_code='.$code.'&grant_type=authorization_code';    
                
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($curl, CURLOPT_TIMEOUT, 500);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
            curl_setopt($curl, CURLOPT_URL, $url);
            $res = curl_exec($curl);
            curl_close($curl);
            
            echo $res; // 这里是获取到的信息

  • 相关阅读:
    合并两个排序的链表
    把数组排成最小的数
    maven下使用jstl标签(1.2)版本
    SpringMVC5中,@ModelAttribute注解详解
    JavaWeb项目中斜杠(/)表示web工程、webapps的场景
    JavaWeb中jsp路径斜杆(/)跟没斜杆的路径映射问题
    关于Java多线程-interrupt()、interrupted()、isInterrupted()解释
    常见的HTTP状态码
    Java中的String,StringBuilder,StringBuffer三者的区别
    解决/WEB-INF目录下的jsp页面引入webRoot下的Js、css和图片的问题
  • 原文地址:https://www.cnblogs.com/taoshihan/p/11408746.html
Copyright © 2011-2022 走看看