zoukankan      html  css  js  c++  java
  • 微信小程序API 登录-wx.login(OBJECT) + 获取微信用户唯一标识openid | 小程序

    wx.login(OBJECT)

    调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid) 及本次登录的 会话密钥(session_key)用户数据的加解密通讯需要依赖会话密钥完成。

     https://www.w3cschool.cn/weixinapp/weixinapp-api-login.html

    OBJECT参数说明:

    参数名类型必填说明
    success Function 接口调用成功的回调函数
    fail Function 接口调用失败的回调函数
    complete Function 接口调用结束的回调函数(调用成功、失败都会执行)

    success返回参数说明:

    参数名类型说明
    errMsg String 调用结果
    code String 用户允许登录后,回调内容会带上 code(有效期五分钟),开发者需要将 code 发送到开发者服务器后台,使用code 换取 session_key api,将 code 换成 openid 和 session_key

    示例代码:

    //app.js
    App({
      onLaunch: function() {
        wx.login({
          success: function(res) {
            if (res.code) {
              //发起网络请求
              wx.request({
                url: 'https://test.com/onLogin',
                data: {
                  code: res.code
                }
              })
            } else {
              console.log('获取用户登录态失败!' + res.errMsg)
            }
          }
        });
      }
    })
    

    code 换取 session_key

    ​这是一个 HTTPS 接口,开发者服务器使用登录凭证 code 获取 session_key 和 openid。其中 session_key 是对用户数据进行加密签名的密钥。为了自身应用安全,session_key 不应该在网络上传输

    接口地址:

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

    请求参数:

    参数必填说明
    appid 小程序唯一标识
    secret 小程序的 app secret
    js_code 登录时获取的 code
    grant_type 填写为 authorization_code

    返回参数:

    参数说明
    openid 用户唯一标识
    session_key 会话密钥
    unionid 用户在开放平台的唯一标识符。本字段在满足一定条件的情况下才返回。具体参看UnionID机制说明

    返回说明:

    //正常返回的JSON数据包
    {
          "openid": "OPENID",
          "session_key": "SESSIONKEY"
          "unionid":  "UNIONID"
    }
    //错误时返回JSON数据包(示例为Code无效)
    {
        "errcode": 40029,
        "errmsg": "invalid code"
    }
    

    一、基础知识

    ? 接口地址
    https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
    ? 请求参数
    appid:小程序的唯一标识
    secret:小程序的app secret
    js_code:用户的登录凭证code(使用wx.login({})可获取到)
    grant_type:填写authorization_code
    ? 返回参数
    expires_in:凭证有效时间,单位:秒
    openid:用户唯一标识
    session_key:会话密匙(考虑到应用安全,不应该在网络上传输session_key)

    二、客户端原理

    1、使用小程序登录接口wx.login({})获取用户的登录凭证code
    2、使用小程序网络请求API wx.request({})将获取用户登录凭证(code)发送至服务器
    示例
    /**************************************
    * config:小程序配置文件
    * loginUrl:服务器地址
    * code:返回参数,用户登录凭证
    * wx.login({}):登录接口
    * wx.request({}):网络请求API

    * 日期:2017-1-1
    **************************************/
    var CONGIF=require(‘config‘); 
    var OBJ_APP_DATA={}; 
    OBJ_APP_DATA[‘onLaunch‘]=function(){ 
    wx.login({ 
    success: (res)=>{
    wx.request({
    url:CONGIF.loginUrl,
    data: {
    code:res.code
    },
    method: ‘GET‘, 
    success: (res)=>{
    console.log(res.data)
    },
    })
    }
    })
    }
    App(OBJ_APP_DATA);

    三、服务端php原理

    1、使用isset()函数检测客户端是否有传递code参数
    示例
    if(isset($_GET[‘code‘])){}
    2、使用 curl_init()函数初始化一个CURL会话,初始化成功后返回一个句柄供curl_setopt(), curl_exec(),和 curl_close() 函数使用
    示例
    $curl = curl_init();
    3、使用curl_setopt()设置要获取的URL地址
    示例
    $url=‘https://api.weixin.qq.com/sns/jscode2session?appid=‘.$appid.‘&secret=‘.$secret.‘&js_code=‘.$code.‘&grant_type=authorization_code‘;
    curl_setopt($curl, CURLOPT_URL, $url);
    4、设置是否输出header
    示例
    curl_setopt($curl, CURLOPT_HEADER, 1);
    5、设置是否输出结果
    示例
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    6、设置是否输出结果
    示例
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    7、设置是否检查服务器端的证书
    示例
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    8、使用curl_exec()将CURL返回的结果转换成正常数据并保存到一个变量
    示例
    $data = curl_exec($curl);
    9、使用 curl_close() 关闭CURL会话
    示例
    curl_close($curl);

  • 相关阅读:
    什么是 Visual VM?
    myeclipse svn 修改用户名和密码
    unix/linux共享内存应用与陷阱
    linux内存查看方式
    Linux下crontab命令的用法
    linux ftp命令参数全集
    XmlDataSource控件绑定GridView
    VC++发布Activex控件
    SqlServer数据库自定义Split()函数
    C和C++中的主要数据类型和字节大小
  • 原文地址:https://www.cnblogs.com/kenshinobiy/p/9112375.html
Copyright © 2011-2022 走看看