Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
良好的行为成为习惯
uni-app
提交
b72106e9
U
uni-app
项目概览
良好的行为成为习惯
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b72106e9
编写于
2月 28, 2020
作者:
雪洛
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
docs: unicloud 登录流程
上级
61a85876
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
21 addition
and
56 deletion
+21
-56
docs/uniCloud/authentication.md
docs/uniCloud/authentication.md
+20
-56
docs/uniCloud/cf-authentication.md
docs/uniCloud/cf-authentication.md
+1
-0
未找到文件。
docs/uniCloud/authentication.md
浏览文件 @
b72106e9
**本章内容仅针对腾讯云开发,阿里侧暂不支持**
**腾讯云侧必须以任意登录方式登录之后才可以访问云端资源。开发者在控制台开启匿名登录之后,可以在客户端以匿名登录方式来获取访问云端资源的权限**
## 名词解释
-
Ticket(票据):由云函数调用
`createTicket`
返回的票据,用于客户端使用票据进行登录操作
-
匿名登录:用户未进行登录操作的状态
-
短期访问令牌:用户身份的凭证(access token),调用
`signInWithTicket`
或者
`linkAndRetrieveDataWithTicket`
之后会自动进行存储
## uniCloud.auth()
...
...
@@ -12,7 +16,7 @@
const
auth
=
uniCloud
.
auth
()
```
## auth.signInAnonymously()
<!--
## auth.signInAnonymously()
进行匿名登录,详细描述参考
[
匿名登录
](
#匿名登录
)
...
...
@@ -21,11 +25,12 @@ const auth = uniCloud.auth()
```
js
const
auth
=
uniCloud
.
auth
()
auth
.
signInAnonymously
()
```
```
-->
<span
id=
"signinwithticket"
></span>
## auth.signInWithTicket()
进行自定义登录
,详细描述参考
[
自定义登录
](
#自定义登录
)
使用
,详细描述参考
[
自定义登录
](
#自定义登录
)
**示例代码**
...
...
@@ -78,21 +83,22 @@ auth.signInWithTicket('YourTicket').then(() => {
})
```
## 自定义登录
<span
id=
"cloudtoken"
></span>
## 登录流程
`uniCloud`
允许开发者使用特定的登录凭据
`Ticket`
对用户进行身份认证。开发者可以使用
`服务端 SDK`
来创建
`Ticket`
,并且将
`
token
`
传入到应用内,然后调用
`signInWithTicket()`
获得登录态。
`uniCloud`
允许开发者使用特定的登录凭据
`Ticket`
对用户进行身份认证。开发者可以使用
`服务端 SDK`
来创建
`Ticket`
,并且将
`
Ticket
`
传入到应用内,然后调用
`signInWithTicket()`
获得登录态。
### 获取私钥文件
###
第一步:
获取私钥文件
登录uniCloud控制台
[
uniCloud控制台
](
http://unicloud.dcloud.net.cn/
)
,在
`用户管理页面`
中,点击“登录设置”,然后
**生成并下载私钥**
:
![
uniCloud下载私钥
](
https://img.cdn.aliyun.dcloud.net.cn/uni-app/uniCloud/auth-custom.png
)
### 使用云函数创建登录凭据
###
第二步:
使用云函数创建登录凭据
获取私钥文件
之后,重命名为
`credentials.json`
放在云函数同级目录
即可
获取私钥文件
(
`credentials.json`
)之后,放在需要生成
`Ticket`
的云函数内
`index.js`
同级
即可
`服务端 SDK`
内置了生成
`Ticket`
的接口,开发者需要提供一个自定义的
`customUserId`
作为用户的
唯一身份标识
。
`Ticket`
有效期为
**5分钟**
,过期则失效。
`服务端 SDK`
内置了生成
`Ticket`
的接口,开发者需要提供一个自定义的
`customUserId`
作为用户的
**唯一身份标识**
。
`Ticket`
有效期为
**5分钟**
,过期则失效。
每个用户的
`customUserId`
不能相同,每次用户重新登录时,原有的登录态将会失效。
...
...
@@ -105,34 +111,7 @@ const ticket = uniCloud.auth().createTicket(customUserId, {
// 然后把 ticket 发送给客户端
```
<!-- ### 在开发者服务器创建登录凭据
获取私钥文件之后,在服务端 SDK 初始化时,加入私钥文件的路径:
```
js
// 开发者的服务端代码
// 初始化示例
const
tcb
=
require
(
'
tcb-admin-node
'
);
// 1. 直接使用下载的私钥文件
tcb
.
init
({
// ...
spaceId
:
'
your-space-id
'
,
credentials
:
require
(
'
/path/to/your/tcb_custom_login.json
'
)
});
// 2. 也可以直接传入私钥的内容
tcb
.
init
({
// ...
spaceId
:
'
your-space-id
'
,
credentials
:
{
private_key_id
:
'
xxxxxxxxxxxxx
'
,
private_key
:
'
xxxxxxxxxxx
'
}
});
```
-->
### 客户端上使用Ticket登录
### 第三步:客户端上使用Ticket登录
创建
`Ticket`
之后,开发者应将
`Ticket`
发送至客户端,然后使用
`客户端SDK`
提供的
`signInWithTicket()`
登录
`uniCloud`
:
...
...
@@ -142,32 +121,17 @@ auth.signInWithTicket(ticket).then(() => {
})
```
## 匿名登录
uniCloud允许开发者使用匿名登录的方式进行静默授权,可以避免强制登录。在匿名状态下可正常的调用uniCloud的资源,开发者同时可以配合安全规则针对匿名用户制定对应的访问限制。
### 开启匿名登录授权
登录uniCloud控制台
[
uniCloud控制台
](
http://unicloud.dcloud.net.cn/
)
,在
`用户管理页面`
中,点击“登录设置”,点击“登录设置”,然后在“匿名登录”一栏打开/关闭可用状态。
![
uniCloud匿名登录
](
https://img.cdn.aliyun.dcloud.net.cn/uni-app/uniCloud/auth-anonymously.png
)
### 客户端进行匿名登录
```
js
await
auth
.
signInAnonymously
().
catch
(
err
=>
{
// 登录失败会抛出错误
});
// 匿名登录成功检测登录状态isAnonymous字段为true
const
loginState
=
await
auth
.
getLoginState
();
console
.
log
(
loginState
.
isAnonymous
)
// true
```
uniCloud允许开发者使用匿名登录的方式进行静默授权,可以避免强制登录。在匿名状态下可正常的调用uniCloud的资源,开发者同时可以配合安全规则针对匿名用户制定对应的访问限制。
#### 匿名用户重新登录
匿名用户如果要重新使用开发者提供的身份登录,可以调用
`auth.signInWithTicket`
来进行。
[
参考
](
#
客户端上使用Ticket登录
)
匿名用户如果要重新使用开发者提供的身份登录,可以调用
`auth.signInWithTicket`
来进行。
[
参考
](
#
signinwithticket
)
#### 匿名用户转化为自定义用户
目前uniCloud支持将匿名用户转化为自定义登录用户,此转正用户将会继承匿名用户在云端创建的资源,流程如下:
1.
首先需要按照
自定义登录的流程
搭建获取自定义登录凭证
`ticket`
的服务;
1.
首先需要按照
[
登录流程
](
#cloudtoken
)
搭建获取自定义登录凭证
`ticket`
的服务;
2.
客户端请求接口获取自定义登录凭证
`ticket`
。
**请注意**
,此
`ticket`
必须未注册过uniCloud,换句话说,匿名用户只能转化为新的uniCloud用户;
3.
客户端调用
`auth.linkAndRetrieveDataWithTicket`
API,如下:
```
js
...
...
docs/uniCloud/cf-authentication.md
浏览文件 @
b72106e9
...
...
@@ -27,6 +27,7 @@ const {
const
IP
=
auth
.
getClientIP
()
```
<span
id=
"createticket"
></span>
### auth.createTicket(String customUserId, Object createTicketOptions)
开发者可以使用云函数创建登录凭证,提供给客户端进行登录操作。
[
详见
](
uniCloud/authentication.md#自定义登录
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录