专栏首页数据云团Django实战-初识小程序授权登录

Django实战-初识小程序授权登录

Django实战-初篇-小程序助手

Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。

在完成Django项目创建和微信小程序项目创建后,接下来就是进行业务代码的编写。关于小程序的授权登录,需要提前到微信小程序开发文档中进行了解。登录凭证校验,通过 wx.login 接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程。

1.调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。

2.调用 auth.code2Session 接口,换取 用户唯一标识 OpenID 和 会话密钥 session_key。

一、小程序端授权

由微信提供授权登录API,部分接口需要经过用户授权同意才能调用。微信把这些接口按使用范围分成多个 scope ,用户选择对 scope 来进行授权,当授权给一个 scope 之后,其对应的所有接口都可以直接使用。

此类接口调用时:

1.如果用户未接受或拒绝过此权限,会弹窗询问用户,用户点击同意后方可调用接口;

2.如果用户已授权,可以直接调用接口;

3.如果用户已拒绝授权,则不会出现弹窗,而是直接进入接口 fail 回调。

① 获取用户授权设置

小程序目录介绍

本项目目录

② 使用 wx.getSetting 获取用户当前的授权状态

在小程序项目路径下的 app.js 文件中,添加获取用户信息的全局配置。

App({
  onLaunch: function () {
    // 展示本地存储能力
    var logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)
    
    // 获取用户信息
    wx.getSetting({
      success: res => {
        if (res.authSetting['scope.userInfo']) {
          // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
          wx.getUserInfo({
            success: res => {
              // 可以将 res 发送给后台解码出 unionId
              this.globalData.userInfo = res.userInfo

              // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
              // 所以此处加入 callback 以防止这种情况
              if (this.userInfoReadyCallback) {
                this.userInfoReadyCallback(res)
              }
            }
          })
        }
      }
    })
  },
  globalData: {
    userInfo: null,
    serverUrl: "http://127.0.0.1:8080",
    apiVersion: '/api/v1.0',
    appId: "wx949081c93da36de2",
    auth: {
      isAuthorized: false
    }
  }
})

③ 个人中心的 WXML 页面结构

使用 button 组件 绑定用户的点击授权事件。

<button class="cu-btn round bg-white shadow" wx:if="{{! hasUserInfo}}" disabled='{{isLogin}}' open-type='getUserInfo' bindgetuserinfo="onAuthorizeConfirm">
请点击授权
</button>

本文分享自微信公众号 - 数据云团(SmartData),作者:云团小楠

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Django源码学习-12-ContextMixin 上下文

    Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(...

    小团子
  • Django实战篇-论坛 URL 路由

    当 url 的一部分被当作某些资源(这些资源用来构成某个某页)的标识的时候就去创建一个动态页面。

    小团子
  • Django实战-配置 Redis

    Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(...

    小团子
  • 糖大夫--测量流程性能监控自动化方案设计

    糖大夫(简称)是一款血糖仪(想了解更多的同学请看这里http://tdf.qq.com/),但不止血糖仪。血糖仪终端具备触屏、联网、高准度血糖检测单元。除了终端...

    腾讯移动品质中心TMQ
  • 文件和异常

    你将学习处理文件,让程序能够快速地分析大量的数据,你将学习错误处理,避免程序在面对意外情形时崩溃;特殊对象,用于管理程序运行时出现的错误;

    于小勇
  • 利用Runtime实现NScoding

    最近项目需要缓存,因为项目都是用的对象,要缓存对象必须实现NSCoding协议,但是每个Model都要实现

    赵哥窟
  • Android新手之旅(1) 开发环境的安装

      大致情况:安装Android开发环境,网上有很多的教程,装eclipse,jdk…别的问题都不大,最麻烦的是装sdk,因为安装是一个在线安装过程,而要安装的...

    用户1075292
  • shell脚本 统计一段程序运行时间【转】

    用户3033338
  • 前端少为人知的知识–前端冷知识集锦(javascript篇)

    利用Math.random和toString生成随机字符串。这里的技巧是利用了toString方法可以接收一个基数作为参数的原理,这个基数从2到36封顶。如果不...

    疯狂的技术宅
  • SIGGRAPH2018论文:深度强化学习教机器人自己穿衣服!(附视频)

    随着AI技术进步的日新月异,现在的机器人越来越智能,但不管是机器人还是虚拟模型,基本都处于“赤身裸体”的状态,即便是穿了衣服,也是靠着外部的力量或帮助穿上的。

    新智元

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动