login.md 9.0 KB
Newer Older
M
mehaotian 已提交
1 2 3 4 5
### uni.login(OBJECT)
登录

**平台差异说明**

6
|App|H5|微信小程序|支付宝小程序|百度小程序|字节跳动小程序|QQ小程序|
W
wanganxp 已提交
7 8
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|√|√|√|√|
M
mehaotian 已提交
9 10 11 12 13 14 15 16 17 18 19 20 21

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

**OBJECT 参数说明**

|参数名|类型|必填|说明|平台差异说明|
|:-|:-|:-|:-|:-|
|provider|String|否|登录服务提供商,通过 [uni.getProvider](/api/plugins/provider) 获取,如果不设置则弹出登录列表选择界面||
|scopes|String/Array|见平台差异说明|授权类型,默认 auth_base。支持 auth_base(静默授权)/ auth_user(主动授权) / auth_zhima(芝麻信用)|支付宝小程序|
|timeout|Number|否|超时时间,单位ms|微信小程序、百度小程序|
Q
qiang 已提交
22
|univerifyStyle|Object|否|[一键登录](/univerify)页面样式|App 3.0.0+|
M
mehaotian 已提交
23 24 25 26 27 28 29 30 31
|success|Function|否|接口调用成功的回调||
|fail|Function|否|接口调用失败的回调函数||
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)| |

**success 返回参数说明**

|参数名|说明|
|:-|:-|
|authResult|登录服务商提供的登录信息,服务商不同返回的结果不完全相同|
雪洛's avatar
雪洛 已提交
32
|code|小程序专有,用户登录凭证。开发者需要在开发者服务器后台,使用 code 换取 openid 和 session_key 等信息|
M
mehaotian 已提交
33 34
|errMsg|描述信息|

雪洛's avatar
雪洛 已提交
35
各个平台的登录流程存在差异,详细请参考相关平台的文档说明:
M
mehaotian 已提交
36 37

* [微信小程序登录](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html)
雪洛's avatar
雪洛 已提交
38
* [支付宝小程序用户授权](https://docs.alipay.com/mini/introduce/authcode)
M
mehaotian 已提交
39
* [百度小程序登录](https://smartprogram.baidu.com/docs/develop/api/open_log/#%E6%8E%88%E6%9D%83%E6%B5%81%E7%A8%8B%E8%AF%B4%E6%98%8E/)
40
* [字节跳动小程序登录](https://developer.toutiao.com/dev/cn/mini-app/develop/open-capacity/log-in/login)
W
wanganxp 已提交
41
* [Apple登录、苹果登录、Sign in with Apple](https://ask.dcloud.net.cn/article/36651)
Q
qiang 已提交
42
* [一键登陆](/univerify)
W
wanganxp 已提交
43

hbcui1984's avatar
hbcui1984 已提交
44 45 46 47
如果服务端使用`uniCloud`,那么官方提供了[uni-id](https://uniapp.dcloud.net.cn/uniCloud/uni-id)云端统一登录服务,把微信登录、短信验证码登录及角色权限管理等服务端登录开发,进行了统一的封装。

前端统一的`uni.login`和云端统一的`uni-id`搭配,可以极大提升登录业务的开发效率,强烈推荐给开发者使用。uni-id的文档另见:https://uniapp.dcloud.net.cn/uniCloud/uni-id

M
mehaotian 已提交
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

**示例**

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


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

> 1.6.0 新增

**平台差异说明**

68
|App|H5|微信小程序|支付宝小程序|百度小程序|字节跳动小程序|QQ小程序|
W
wanganxp 已提交
69 70
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|x|√|√|√|
M
mehaotian 已提交
71 72 73 74 75 76 77 78 79 80 81 82 83 84

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


### uni.getUserInfo(OBJECT)

获取用户信息。

**平台差异说明**

85
|App|H5|微信小程序|支付宝小程序|百度小程序|字节跳动小程序|QQ小程序|
W
wanganxp 已提交
86 87
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|√|√|√|√|
M
mehaotian 已提交
88 89 90 91 92 93 94 95

**注意:** 微信小程序端,在用户未授权过的情况下调用此接口,不会出现授权弹窗,会直接进入 fail 回调(详见[《微信小程序公告》](https://developers.weixin.qq.com/community/develop/doc/0000a26e1aca6012e896a517556c01))。在用户已授权的情况下调用此接口,可成功获取用户信息。

**OBJECT 参数说明**

|参数名|类型|必填|说明|平台差异说明|
|:-|:-|:-|:-|:-|:-|
|provider|String|否|登录服务提供商,通过 uni.getProvider 获取||
96
|withCredentials|Boolean|否|是否带上登录态信息。|微信小程序、字节跳动小程序|
ffpocky's avatar
ffpocky 已提交
97
|lang|String|否|指定返回用户信息的语言,默认为 en。更多值请参考下面的说明。|微信小程序|
M
mehaotian 已提交
98 99 100 101 102 103 104 105 106 107 108 109 110
|timeout|Number|否|超时时间,单位 ms。|微信小程序|
|success|Function|否|接口调用成功的回调||
|fail|Function|否|接口调用失败的回调函数||
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)| |

**lang 值说明**

|值|说明|
|:-|:-|
|zh_CN|简体中文|
|zh_TW|繁体中文|
|en|英文|

雪洛's avatar
雪洛 已提交
111
**注意:**在小程序 withCredentials 为 true 时或是在 App 调用 uni.getUserInfo,要求此前有调用过 uni.login 且登录态尚未过期。
M
mehaotian 已提交
112 113 114 115 116 117 118

**success 返回参数说明**

|参数|类型|说明|平台差异说明|
|:-|:-|:-||
|userInfo|OBJECT|用户信息对象||
|rawData|String|不包括敏感信息的原始数据字符串,用于计算签名。||
119 120 121
|signature|String|使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息。|微信小程序、字节跳动小程序|
|encryptedData|String|包括敏感数据在内的完整用户信息的加密数据,详细见加密数据解密算法。|微信小程序、字节跳动小程序|
|iv|String|加密算法的初始向量,详细见加密数据解密算法。|微信小程序、字节跳动小程序|
M
mehaotian 已提交
122 123 124 125 126 127 128
|errMsg|String|描述信息| |

**userInfo 参数说明**

|参数|类型|说明|平台差异说明|
|:-|:-|:-||
|nickName|String|用户昵称||
雪洛's avatar
雪洛 已提交
129
|openId|String|该服务商唯一用户标识|App|
M
mehaotian 已提交
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
|avatarUrl|String|用户头像| |

除了以上三个必有的信息外,不同服务供应商返回的其它信息会存在差异。

#### App端登陆的扩展说明

App端还支持更多登陆相关API,如`logout`[详见](https://www.html5plus.org/doc/zh_cn/oauth.html)

App端登陆相关的SDK需要在manifest中配置:
1. 打开 manifest.json -> App模块权限配置,勾选 OAuth(登陆鉴权)。
2. 打开 manifest.json -> App SDK配置,查看到登陆鉴权。在说明中有蓝色链接,其中包括向微信、QQ、微博等平台申请sdk的链接。
3. 向微信、QQ、微博等平台申请到sdk的信息后,回填到manifest里。
4. 这些配置需要打包生效,真机运行仍然是HBuilder基座的设置,可使用[自定义基座包](http://ask.dcloud.net.cn/article/12723)。离线打包请参考离线打包文档在原生工程中配置。
5. 配置并打包后,通过`uni.getProvider`可以得到配置的结果列表,注意这里返回的是manifest配置的,与手机端是否安装微信、QQ、微博无关。

如果手机端未安装QQ、微博,调用时会启动这些平台的wap页面登陆,如果已安装相应客户端,会启动它们的客户端登陆。

**示例**

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

W
wanganxp 已提交
165
#### App端集成其他登陆SDK如支付宝、淘宝、facebook登陆的说明
W
wanganxp 已提交
166 167
1. [支付宝登陆](https://ext.dcloud.net.cn/search?q=%E6%94%AF%E4%BB%98%E5%AE%9D%E7%99%BB%E9%99%86)[淘宝登陆](https://ext.dcloud.net.cn/search?q=%E7%99%BE%E5%B7%9D)[抖音登录](https://ext.dcloud.net.cn/search?q=%E6%8A%96%E9%9F%B3%E7%99%BB%E5%BD%95)[facebook登录](https://ext.dcloud.net.cn/search?q=facebook%E7%99%BB%E5%BD%95)等在插件市场均已有插件,还有[sharesdk](https://ext.dcloud.net.cn/search?q=sharesdk)等专业集成多家登录分享的插件。
2. 也可以内嵌web-view组件,使用web登陆模式集成这些三方登陆
Q
qiang 已提交
168 169 170 171 172 173 174 175

### uni.preLogin(OBJECT)
预登录。

**平台差异说明**

|App|H5|微信小程序|支付宝小程序|百度小程序|字节跳动小程序|QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
Q
qiang 已提交
176
|3.0.0+|x|x|x|x|x|x|
Q
qiang 已提交
177 178 179 180 181

**OBJECT 参数说明**

|参数名|类型|必填|说明|
|:-|:-|:-|:-|
Q
qiang 已提交
182
|provider|String|否|登录服务提供商,通过 [uni.getProvider](/api/plugins/provider) 获取,目前仅支持[一键登陆](/univerify)|
Q
qiang 已提交
183 184 185 186 187 188
|success|Function|否|接口调用成功的回调|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|


### uni.closeAuthView()
Q
qiang 已提交
189
关闭[一键登陆](/univerify)页面。
Q
qiang 已提交
190 191 192 193 194

**平台差异说明**

|App|H5|微信小程序|支付宝小程序|百度小程序|字节跳动小程序|QQ小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
Q
qiang 已提交
195
|3.0.0+|x|x|x|x|x|x|