这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助

uni.login(OBJECT)登录

H5平台登陆注意事项:

微信内嵌浏览器运行H5版时,可通过js sdk实现微信登陆,需要引入一个单独的js,详见普通浏览器上实现微信登陆,并非开放API,需要向微信申请,仅个别开发者有此权限H5平台的其他登陆,比如QQ登陆、微博登陆,uni-app未封装,请在条件编译里按普通H5写法编写。

OBJECT 参数说明

参数名 类型 必填 说明 平台差异说明provider String 否 登录服务提供商,通过 uni.getProvider 获取,如果不设置则弹出登录列表选择界面
scopes String/Array 见平台差异说明 授权类型,默认 authbase。支持 authbase(静默授权)/ authuser(主动授权) / authzhima(芝麻信用) 支付宝小程序timeout Number 否 超时时间,单位ms 微信小程序、百度小程序success Function 否 接口调用成功的回调
fail Function 否 接口调用失败的回调函数
complete Function 否 接口调用结束的回调函数(调用成功、失败都会执行)

success 返回参数说明

参数名 说明authResult 登录服务商提供的登录信息,服务商不同返回的结果不完全相同errMsg 描述信息

uni.login({
provider: 'weixin',
success: function (loginRes) {
console.log(loginRes.authResult);
}
});

uni.checkSession检查登录状态是否过期

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

uni.getUserInfo(OBJECT)获取用户信息。

UNI-APP 开发微信公众号(H5)JSSDK 的使用方式

在 uniapp 中可以使用模块方式引用微信 js-sdk ,微信官网直接下载的使用有问题,可以使用 jweixin-module。

安装

下载使用方式下载地址:https://unpkg.com/jweixin-module@1.4.1/out/index.js

使用

var jweixin = require('jweixin-module')
jweixin.ready(function(){
// TODO
});

小程序:

1、使用 button 组件,并将 open-type 指定为 getUserInfo 类型,获取用户基本信息。

详情参考文档:

https://developers.weixin.qq.com/miniprogram/dev/component/button.html

2、使用 open-data 展示用户基本信息。

详情参考文档:

https://developers.weixin.qq.com/miniprogram/dev/component/open-data.html

provider String 否 登录服务提供商,通过 uni.getProvider 获取
withCredentials Boolean 否 是否带上登录态信息。 微信小程序、头条小程序lang Number 否 指定返回用户信息的语言,默认为 en。更多值请参考下面的说明。 微信小程序timeout Number 否 超时时间,单位 ms。 微信小程序success Function 否 接口调用成功的回调
fail Function 否 接口调用失败的回调函数
complete Function 否 接口调用结束的回调函数(调用成功、失败都会执行)

userInfo 参数说明

参数 类型 说明 平台差异说明nickName String 用户昵称
openId String 该服务商唯一用户标识 5+AppavatarUrl String 用户头像

uni.login({
provider: 'weixin',
success: function (loginRes) {
console.log(loginRes.authResult);
// 获取用户信息
uni.getUserInfo({
provider: 'weixin',
success: function (infoRes) {
console.log('用户昵称为:' + infoRes.userInfo.nickName);
}
});
}
});

说明:调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。调用 auth.code2Session 接口,换取 用户唯一标识 OpenID 和 会话密钥 session_key。之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。

注意:

会话密钥 session_key 是对用户数据进行 加密签名 的密钥。为了应用自身的数据安全,开发者服务器不应该把会话密钥下发到小程序,也不应该对外提供这个密钥。临时登录凭证 code 只能使用一次

uni.getProvider(OBJECT)获取服务供应商。仅App平台支持。

在App平台,可用的服务商,是打包环境中配置的服务商,与手机端安装了什么app没有关系。

云打包在manifest中配置相关模块和SDK信息,离线打包在原生工程中配置。某个服务商配置被打包进去,运行时就能得到相应的服务供应商。

uniapp 微信小程序授权后获取用户信息:Padding is invalid and cannot be removed报错解析

报错原因:

是因为在调用uni.login时,可能会刷新登录状态。通过uni.login获取到的code请求到的session_key,在请求获取手机号时所需的参数值不一致所导致的报错。

解决办法:

在onLoad生命周期,先获取code,再使用wx.getUserInfo配合后端接口获取手机号即可。我这里只写前端处理,后端api接口请根据官方文档编写。

代码片段:

<template>
<button open-type="getPhoneNumber" @getphonenumber="wxLogin" class="wxLogin_Btn">使用微信登录</button>
</template>
<script>
import {GetUserSessionKeyAndOpenid,WXLogin} from '../api.js'
export default{
data(){
return{
wxUserCode:'',
}
},
onLoad(){
this.getWxUserCode();
},
methods:{
getWxUserCode(){
let that = this;
//先登录,获取用户code
uni.login({
provider: 'weixin',
success: res => {
that.wxUserCode = res.code;
}
})
},
//微信一键登录
wxLogin(e){
const that = this;
if(that.wxUserCode == ''){
that.$refs.uToast.show({
title:'微信登录授权失败',
type: 'error'
})
that.getWxUserCode();
return false;
}
beginLoading('登录中...');
const getSessionParam ={
code:that.wxUserCode
}
//获取用户session_key和openid
GetUserSessionKeyAndOpenid(that,getSessionParam).then(sessionKeyAndOpenidRes =>{
wx.getSetting({
success: res => {
if (res.authSetting['scope.userInfo']) {
// 已经授权,可以直接调用 getUserInfo 获取头像昵称
wx.getUserInfo({
success: res => {
if(e.detail.errMsg != 'getPhoneNumber:ok'){
endLoading();
that.$refs.uToast.show({
title:'获取个人信息失败',
type: 'error'
})
that.getWxUserCode();
return false;
}
const param = {
session_key:sessionKeyAndOpenidRes.Data.session_key,
iv:e.detail.iv,
encryptedData:e.detail.encryptedData
}
//调用后端api,获取手机号
WXLogin(that,param).then(wxLoginRes =>{})
}
})
}
}
})
})
},
},
}
</script>

本文转载于:

https://blog.csdn.net/qq_40615333/article/details/120200204

如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。

记录--uniapp登录流程详解uni.login的更多相关文章

  1. uniapp登录流程详解uni.login

    uni.login(OBJECT)登录 H5平台登陆注意事项: 微信内嵌浏览器运行H5版时,可通过js sdk实现微信登陆,需要引入一个单独的js,详见普通浏览器上实现微信登陆,并非开放API,需要向 ...

  2. SCP免密传输和SSH登录流程详解

    SCP免密传输和SSH登录协议详解 在linux下开发时,经常需要登录到其他的设备上,例如虚拟机内ubuntu.树莓派等等,经常涉及到传输文件的操作,传输文件有很多中方法,如物理磁盘拷贝,基于网络的s ...

  3. 二维码闪电登录流程详解,附demo(1/2)

    二维码,最早发明于日本,它是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设 ...

  4. 用户登录流程详解 +volley(StringRequest)

    在实习期间由于要求使用volley,所以第一次开始接触volley,从一开始的迷茫陌生,到疯狂的查找各种资料,通过在项目中用到的实际问题,我想做一些总结,所以写了这篇文章.下面我将介绍我理解的用户登录 ...

  5. 二维码闪电登录流程详解,附demo(2/2)

    上篇文章,我们重点介绍了一下二维码登录的流程,以及每个“角色”要做的事情,下面我们重点分析TV角色所做的工作. TV主要完成二维码图片显示,以及websocket请求.下面重点说一下这两点. 1. B ...

  6. Linux启动流程详解【转载】

    在BIOS阶段,计算机的行为基本上被写死了,可以做的事情并不多:一般就是通电.BIOS.主引导记录.操作系统这四步.所以我们一般认为加载内核是linux启动流程的第一步. 第一步.加载内核 操作系统接 ...

  7. git概念及工作流程详解

    git概念及工作流程详解 既然我们已经把gitlab安装完毕[当然这是非必要条件],我们就可以使用git来管理自己的项目了,前文也多多少少提及到git的基本命令,本文就先简单对比下SVN与git的区别 ...

  8. sso单点登录原理详解

    sso单点登录原理详解     01 单系统登录机制    1.http无状态协议 web应用采用browser/server架构,http作为通信协议.http是无状态协议,浏览器的每一次请求,服务 ...

  9. tp6源码解析-第二天,ThinkPHP6编译模板流程详解,ThinkPHP6模板源码详解

    TP6源码解析,ThinkPHP6模板编译流程详解 前言:刚开始写博客.如果觉得本篇文章对您有所帮助.点个赞再走也不迟 模板编译流程,大概是: 先获取到View类实例(依赖注入也好,通过助手函数也好) ...

  10. C++的性能C#的产能?! - .Net Native 系列《二》:.NET Native开发流程详解

    之前一文<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥> 获得很多朋友支持和鼓励,也更让我坚定做这项技术的推广者,希望能让更多的朋友了解这项技术,于是先从官方 ...

随机推荐

  1. win32 - service的创建

    参考这篇教程:Simple Windows Service in C++ 安装service需要在管理员权限下运行cmd,并输入下面的命令行 C:\>sc create "My Sam ...

  2. Web流式下载数据时展示提示信息

    以Web方式下载数据有多种场景: 1.服务端本身已经存在文件,此时只需要一个文件访问地址即可下载,比如:将文件URL设置为<a>标签的href属性即可,点击<a>标签就能立即触 ...

  3. 使用`react-hooks写法`对`antd的Upload.Dragger上传组件`进行二次封装

    使用react-hooks写法对antd的Upload.Dragger上传组件进行二次封装 预期 对antd的Upload.Dragger组件进行二次封装,让它的使用方法和Upload.Dragger ...

  4. rename重命名

    [root@liuwei test]# ls 11.txt 12.txt 13.txt 14.txt 15.txt 16.txt 17.txt 18.txt 19.txt 1.txt 20.txt 2 ...

  5. 面向对象之封装,类的相关操作,私有成员删除,构造方法__init__---day20

    1.面向对象之封装 # ### 面向对象oop -封装 """ 类中封装: 成员属性 成员方法 封装等级: 1.公有:公有成员既能够在类外调用,也可在类内调用 2.私有: ...

  6. Python全栈面试题及知识点总结

    Python全栈面试题 Python全栈阶段总结:https://github.com/HkwJsxl/PythonFullStack/tree/master/Notes Python基础 基础 逻辑 ...

  7. 在Bind DNS Server中添加一个开发环境的域名

    1.Create Master Zone 我们的开发域名约定为dudusoft.cn 输入2个字段,然后提交 2.在域名里面,添加主机记录 点击上图的"Address(0)",出现 ...

  8. 【Azure API 管理】是否可以将Swagger 的API定义导入导Azure API Management中

    问题描述 是否可以将Swagger 的API定义导入导Azure API Management中? 操作步骤 是的,可以通过APIM门户导入单个的API Swagger定义文件.具体步骤如下: 第一步 ...

  9. 自定义ConditionalOnXX注解(二)

    一.前言 在之前的文章<自定义ConditionalOnXX注解>中,介绍了Conditional注解的实现原理和实现自定义Conditional注解的基础方法,但是有些场景我们需要用一个 ...

  10. Java 韩顺平老师的课,记的(前6章)笔记

    https://www.bilibili.com/video/BV1fh411y7R8/?p=110&spm_id_from=333.880.my_history.page.click& ...