Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
49b37d14
D
Docs
项目概览
OpenHarmony
/
Docs
大约 2 年 前同步成功
通知
161
Star
293
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
49b37d14
编写于
3月 13, 2023
作者:
O
openharmony_ci
提交者:
Gitee
3月 13, 2023
浏览文件
操作
浏览文件
下载
差异文件
!15894 账号资料一致性整改-monthly挑单
Merge pull request !15894 from zhouyan/monthly
上级
ba2bb2a3
634cd24c
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
182 addition
and
76 deletion
+182
-76
zh-cn/application-dev/reference/apis/js-apis-appAccount.md
zh-cn/application-dev/reference/apis/js-apis-appAccount.md
+4
-12
zh-cn/application-dev/reference/apis/js-apis-osAccount.md
zh-cn/application-dev/reference/apis/js-apis-osAccount.md
+178
-64
未找到文件。
zh-cn/application-dev/reference/apis/js-apis-appAccount.md
浏览文件 @
49b37d14
...
...
@@ -1100,8 +1100,6 @@ getAllAccounts(callback: AsyncCallback<Array<AppAccountInfo>>): void
获取所有可访问的应用帐号信息。使用callback异步回调。
**需要权限:**
ohos.permission.GET_ALL_APP_ACCOUNTS。
**系统能力:**
SystemCapability.Account.AppAccount
**参数:**
...
...
@@ -1138,8 +1136,6 @@ getAllAccounts(): Promise<Array<AppAccountInfo>>
获取所有可访问的应用帐号信息。使用Promise异步回调。
**需要权限:**
ohos.permission.GET_ALL_APP_ACCOUNTS。
**系统能力:**
SystemCapability.Account.AppAccount
**返回值:**
...
...
@@ -1174,8 +1170,6 @@ getAccountsByOwner(owner: string, callback: AsyncCallback<Array<AppAccount
根据应用帐号所有者获取调用方可访问的应用帐号列表。使用callback异步回调。
**需要权限:**
ohos.permission.GET_ALL_APP_ACCOUNTS。
**系统能力:**
SystemCapability.Account.AppAccount
**参数:**
...
...
@@ -1215,8 +1209,6 @@ getAccountsByOwner(owner: string): Promise<Array<AppAccountInfo>>
根据应用帐号所有者获取调用方可访问的应用帐号列表。使用Promise异步回调。
**需要权限:**
ohos.permission.GET_ALL_APP_ACCOUNTS。
**系统能力:**
SystemCapability.Account.AppAccount
**参数:**
...
...
@@ -1293,7 +1285,7 @@ on(type: 'accountChange', owners: Array<string>, callback: Callback<Arr
### off('accountChange')<sup>9+</sup>
off(type: 'accountChange', callback?: Callback
<Array
\<
AppAccountInfo
>
>
): void
off(type: 'accountChange', callback?: Callback
<
Array
<
AppAccountInfo
>>
): void
取消订阅帐号信息变更事件。
...
...
@@ -1304,7 +1296,7 @@ off(type: 'accountChange', callback?: Callback<Array\<AppAccountInfo>>): void
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------------------------------- | ---- | ------------ |
| type | 'accountChange' | 是 | 事件回调类型,支持的事件为'accountChange',当帐号所有者更新帐号信息时,触发该事件。 |
| callback | Callback
<Array
\<[
AppAccountInfo
](
#appaccountinfo
)
>
>
| 否 | 回调函数,返回信息发生变更的应用帐号列表。 |
| callback | Callback
<
Array
<
[AppAccountInfo](#appaccountinfo)
>>
| 否 | 回调函数,返回信息发生变更的应用帐号列表。 |
**错误码:**
...
...
@@ -3730,7 +3722,7 @@ on(type: 'change', owners: Array<string>, callback: Callback<Array<A
### off('change')<sup>(deprecated)</sup>
off(type: 'change', callback?: Callback
<Array
\<
AppAccountInfo
>
>
): void
off(type: 'change', callback?: Callback
<
Array
<
AppAccountInfo
>>
): void
取消订阅帐号信息变更事件。
...
...
@@ -3745,7 +3737,7 @@ off(type: 'change', callback?: Callback<Array\<AppAccountInfo>>): void
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------------------------------- | ---- | ------------ |
| type | 'change' | 是 | 事件回调类型,支持的事件为'change',当帐号所有者更新帐号信息时,触发该事件。 |
| callback | Callback
<Array
\<[
AppAccountInfo
](
#appaccountinfo
)
>
>
| 否 | 回调函数,返回信息发生变更的应用帐号列表。 |
| callback | Callback
<
Array
<
[AppAccountInfo](#appaccountinfo)
>>
| 否 | 回调函数,返回信息发生变更的应用帐号列表。 |
**示例:**
...
...
zh-cn/application-dev/reference/apis/js-apis-osAccount.md
浏览文件 @
49b37d14
...
...
@@ -325,9 +325,9 @@ checkOsAccountConstraintEnabled(localId: number, constraint: string, callback: A
| 错误码ID | 错误信息 |
| -------- | ------------------- |
| 12300001 |
S
ystem service exception. |
| 12300002 |
Invalid localId.
|
| 12300003 |
Account not found
. |
| 12300001 |
s
ystem service exception. |
| 12300002 |
invalid localId or constraint.
|
| 12300003 |
the account indicated by localId dose not exist
. |
**示例:**
判断ID为100的系统帐号是否有禁止使用Wi-Fi的约束
...
...
@@ -375,9 +375,9 @@ checkOsAccountConstraintEnabled(localId: number, constraint: string): Promise<
| 错误码ID | 错误信息 |
| -------- | ------------------- |
| 12300001 |
S
ystem service exception. |
| 12300002 |
Invalid localId.
|
| 12300003 |
Account not found
. |
| 12300001 |
s
ystem service exception. |
| 12300002 |
invalid localId or constraint.
|
| 12300003 |
the account indicated by localId dose not exist
. |
**示例:**
判断ID为100的系统帐号是否有禁止使用Wi-Fi的约束
...
...
@@ -474,8 +474,6 @@ checkOsAccountVerified(callback: AsyncCallback<boolean>): void
检查当前系统帐号是否已验证。使用callback异步回调。
**需要权限:**
ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS
**系统能力:**
SystemCapability.Account.OsAccount
**参数:**
...
...
@@ -488,9 +486,7 @@ checkOsAccountVerified(callback: AsyncCallback<boolean>): void
| 错误码ID | 错误信息 |
| -------- | ------------------- |
| 12300001 | System service exception. |
| 12300002 | Invalid localId. |
| 12300003 | Account not found. |
| 12300001 | system service exception. |
**示例:**
...
...
@@ -530,9 +526,9 @@ checkOsAccountVerified(localId: number, callback: AsyncCallback<boolean>):
| 错误码ID | 错误信息 |
| -------- | ------------------- |
| 12300001 |
S
ystem service exception. |
| 12300002 |
I
nvalid localId. |
| 12300003 |
Account not found
. |
| 12300001 |
s
ystem service exception. |
| 12300002 |
i
nvalid localId. |
| 12300003 |
the account indicated by localId dose not exist
. |
**示例:**
...
...
@@ -554,7 +550,7 @@ checkOsAccountVerified(localId: number, callback: AsyncCallback<boolean>):
### checkOsAccountVerified<sup>9+</sup>
checkOsAccountVerified(localId
?
: number): Promise
<
boolean
>
checkOsAccountVerified(localId: number): Promise
<
boolean
>
检查指定系统帐号是否已验证。使用Promise异步回调。
...
...
@@ -566,7 +562,7 @@ checkOsAccountVerified(localId?: number): Promise<boolean>
| 参数名 | 类型 | 必填 | 说明 |
| ------- | ------ | ---- | --------------------------------------------------------------- |
| localId | number |
否 | 系统帐号ID。不填则检查当前系统帐号是否已验证
。 |
| localId | number |
是 | 系统帐号ID
。 |
**返回值:**
...
...
@@ -578,9 +574,9 @@ checkOsAccountVerified(localId?: number): Promise<boolean>
| 错误码ID | 错误信息 |
| -------- | ------------------- |
| 12300001 |
S
ystem service exception. |
| 12300002 |
I
nvalid localId. |
| 12300003 |
Account not found
. |
| 12300001 |
s
ystem service exception. |
| 12300002 |
i
nvalid localId. |
| 12300003 |
the account indicated by localId dose not exist
. |
**示例:**
...
...
@@ -990,7 +986,7 @@ getOsAccountLocalId(callback: AsyncCallback<number>): void
| 错误码ID | 错误信息 |
| -------- | ------------------- |
| 12300001 |
S
ystem service exception. |
| 12300001 |
s
ystem service exception. |
**示例:**
...
...
@@ -1027,7 +1023,7 @@ getOsAccountLocalId(): Promise<number>
| 错误码ID | 错误信息 |
| -------- | ------------------- |
| 12300001 |
S
ystem service exception. |
| 12300001 |
s
ystem service exception. |
**示例:**
...
...
@@ -1063,8 +1059,8 @@ getOsAccountLocalIdForUid(uid: number, callback: AsyncCallback<number>): v
| 错误码ID | 错误信息 |
| -------- | --------------- |
| 12300001 |
S
ystem service exception. |
| 12300002 |
I
nvalid uid. |
| 12300001 |
s
ystem service exception. |
| 12300002 |
i
nvalid uid. |
**示例:**
查询值为12345678的uid所属的系统帐号的帐号ID
...
...
@@ -1107,8 +1103,8 @@ getOsAccountLocalIdForUid(uid: number): Promise<number>
| 错误码ID | 错误信息 |
| -------- | ------------- |
| 12300001 |
S
ystem service exception. |
| 12300002 |
I
nvalid uid. |
| 12300001 |
s
ystem service exception. |
| 12300002 |
i
nvalid uid. |
**示例:**
查询值为12345678的uid所属的系统帐号ID
...
...
@@ -1147,8 +1143,8 @@ getOsAccountLocalIdForDomain(domainInfo: DomainAccountInfo, callback: AsyncCallb
| 错误码ID | 错误信息 |
| -------- | ------------- |
| 12300001 |
S
ystem service exception. |
| 12300002 |
I
nvalid domainInfo. |
| 12300001 |
s
ystem service exception. |
| 12300002 |
i
nvalid domainInfo. |
**示例:**
...
...
@@ -1194,8 +1190,8 @@ getOsAccountLocalIdForDomain(domainInfo: DomainAccountInfo): Promise<number&g
| 错误码ID | 错误信息 |
| -------- | ------------- |
| 12300001 |
S
ystem service exception. |
| 12300002 |
I
nvalid domainInfo. |
| 12300001 |
s
ystem service exception. |
| 12300002 |
i
nvalid domainInfo. |
**示例:**
...
...
@@ -1473,7 +1469,7 @@ getActivatedOsAccountLocalIds(callback: AsyncCallback<Array<number>>
| 错误码ID | 错误信息 |
| -------- | ------------- |
| 12300001 |
S
ystem service exception. |
| 12300001 |
s
ystem service exception. |
**示例:**
...
...
@@ -1510,7 +1506,7 @@ getActivatedOsAccountLocalIds(): Promise<Array<number>>
| 错误码ID | 错误信息 |
| -------- | ------------- |
| 12300001 |
S
ystem service exception. |
| 12300001 |
s
ystem service exception. |
**示例:**
...
...
@@ -2232,9 +2228,9 @@ getOsAccountLocalIdForSerialNumber(serialNumber: number, callback: AsyncCallback
| 错误码ID | 错误信息 |
| -------- | ------------------- |
| 12300001 |
S
ystem service exception. |
| 12300002 |
I
nvalid serialNumber. |
| 12300003 |
Account not found
. |
| 12300001 |
s
ystem service exception. |
| 12300002 |
i
nvalid serialNumber. |
| 12300003 |
the account indicated by serialNumber dose not exist
. |
**示例:**
查询与SN码12345关联的系统帐号的ID
...
...
@@ -2275,9 +2271,9 @@ getOsAccountLocalIdForSerialNumber(serialNumber: number): Promise<number>
| 错误码ID | 错误信息 |
| -------- | ------------------- |
| 12300001 |
S
ystem service exception. |
| 12300002 |
I
nvalid serialNumber. |
| 12300003 |
Account not found
. |
| 12300001 |
s
ystem service exception. |
| 12300002 |
i
nvalid serialNumber. |
| 12300003 |
the account indicated by serialNumber dose not exist
. |
**示例:**
查询与SN码12345关联的系统帐号的ID
...
...
@@ -2314,9 +2310,9 @@ getSerialNumberForOsAccountLocalId(localId: number, callback: AsyncCallback<n
| 错误码ID | 错误信息 |
| -------- | ------------------- |
| 12300001 |
S
ystem service exception. |
| 12300002 |
Invalid localId.
|
| 12300003 |
Account not found
. |
| 12300001 |
s
ystem service exception. |
| 12300002 |
invalid localId.
|
| 12300003 |
the account indicated by localId dose not exist
. |
**示例:**
获取ID为100的系统帐号关联的SN码
...
...
@@ -2357,9 +2353,9 @@ getSerialNumberForOsAccountLocalId(localId: number): Promise<number>
| 错误码ID | 错误信息 |
| -------- | ------------------- |
| 12300001 |
S
ystem service exception. |
| 12300002 |
Invalid localId.
|
| 12300003 |
Account not found
. |
| 12300001 |
s
ystem service exception. |
| 12300002 |
invalid localId.
|
| 12300003 |
the account indicated by localId dose not exist
. |
**示例:**
获取ID为100的系统帐号关联的SN码
...
...
@@ -2482,8 +2478,8 @@ getBundleIdForUid(uid: number, callback: AsyncCallback<number>): void;
| 错误码ID | 错误信息 |
| -------- | ------------- |
| 12300001 |
S
ystem service exception. |
| 12300002 |
I
nvalid uid. |
| 12300001 |
s
ystem service exception. |
| 12300002 |
i
nvalid uid. |
**示例:**
...
...
@@ -2525,8 +2521,8 @@ getBundleIdForUid(uid: number): Promise<number>;
| 错误码ID | 错误信息 |
| -------- | ------------- |
| 12300001 |
S
ystem service exception. |
| 12300002 |
I
nvalid uid. |
| 12300001 |
s
ystem service exception. |
| 12300002 |
i
nvalid uid. |
**示例:**
...
...
@@ -2643,9 +2639,9 @@ getOsAccountConstraintSourceTypes(localId: number, constraint: string, callback:
| 错误码ID | 错误信息 |
| -------- | ------------- |
| 12300001 |
S
ystem service exception. |
| 12300002 |
Invalid localId
or constraint. |
| 12300003 |
Account not found
. |
| 12300001 |
s
ystem service exception. |
| 12300002 |
invalid name
or constraint. |
| 12300003 |
the account indicated by localId dose not exist
. |
**示例:**
...
...
@@ -2690,9 +2686,9 @@ getOsAccountConstraintSourceTypes(localId: number, constraint: string): Promise&
| 错误码ID | 错误信息 |
| -------- | ------------- |
| 12300001 |
S
ystem service exception. |
| 12300002 |
Invalid localId
or constraint. |
| 12300003 |
Account not found
. |
| 12300001 |
s
ystem service exception. |
| 12300002 |
invalid name
or constraint. |
| 12300003 |
the account indicated by localId dose not exist
. |
**示例:**
...
...
@@ -4327,6 +4323,122 @@ unregisterInputer(): void;
pinAuth
.
unregisterInputer
();
```
## DomainPlugin<sup>9+</sup>
域插件,提供域帐号认证功能。
**系统接口:**
此接口为系统接口。
### auth<sup>9+</sup>
auth(domainAccountInfo: DomainAccountInfo, credential: Uint8Array, callback: IUserAuthCallback): void
认证指定的域帐号。
**系统接口:**
此接口为系统接口。
**系统能力:**
SystemCapability.Account.OsAccount
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ---------- | --------------------------------------- | ---- | --------------- |
| domainAccountInfo |
[
DomainAccountInfo
](
#domainaccountinfo8
)
| 是 | 指示域帐号信息。|
| credential | Uint8Array | 是 | 指示域帐号的凭据。|
| callback |
[
IUserAuthCallback
](
#iuserauthcallback8
)
| 是 | 指示认证结果回调。|
**示例:**
```
js
let
plugin
=
{
auth
:
(
domainAccountInfo
,
credential
,
callback
)
=>
{
// mock authentication
// notify authentication result
callback
.
onResult
(
0
,
{
token
:
new
Uint8Array
([
0
]),
remainTimes
:
5
,
freezingTime
:
0
});
}
}
account_osAccount
.
DomainAccountManager
.
registerPlugin
(
plugin
);
let
userAuth
=
new
account_osAccount
.
UserAuth
();
let
challenge
=
new
Uint8Array
([
0
]);
let
authType
=
account_osAccount
.
AuthType
.
DOMAIN
;
let
authTrustLevel
=
account_osAccount
.
AuthTrustLevel
.
ATL1
;
try
{
userAuth
.
auth
(
challenge
,
authType
,
authTrustLevel
,
{
onResult
:
(
resultCode
,
authResult
)
=>
{
console
.
log
(
'
auth resultCode =
'
+
resultCode
);
console
.
log
(
'
auth authResult =
'
+
JSON
.
stringify
(
authResult
));
}
});
}
catch
(
err
)
{
console
.
log
(
'
auth exception =
'
+
JSON
.
stringify
(
err
));
}
```
## DomainAccountManager <sup>9+</sup>
域帐号管理器类。
### registerPlugin<sup>9+</sup>
static registerPlugin(plugin: DomainPlugin): void
注册域插件。
**系统接口:**
此接口为系统接口。
**系统能力:**
SystemCapability.Account.OsAccount
**需要权限:**
ohos.permission.MANAGE_LOCAL_ACCOUNTS
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ----------| ----------------------- | --- | -------------------------- |
| plugin |
[
DomainPlugin
](
#domainplugin9
)
| 是 | 指示域插件。 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | --------------------------- |
| 12300201 | the domain plugin has been registered. |
**示例:**
```
js
let
plugin
=
{
auth
:
(
domainAccountInfo
,
credential
,
callback
)
=>
{}
}
try
{
account_osAccount
.
DomainAccountManager
.
registerPlugin
(
plugin
);
console
.
log
(
'
registerPlugin success.
'
);
}
catch
(
err
)
{
console
.
log
(
"
registerPlugin err:
"
+
JSON
.
stringify
(
err
));
}
```
### unregisterPlugin<sup>9+</sup>
static unregisterPlugin(): void
注销域插件。
**系统接口:**
此接口为系统接口。
**系统能力:**
SystemCapability.Account.OsAccount
**需要权限:**
ohos.permission.MANAGE_LOCAL_ACCOUNTS
**示例:**
```
js
try
{
account_osAccount
.
DomainAccountManager
.
unregisterPlugin
();
console
.
log
(
'
unregisterPlugin success.
'
);
}
catch
(
err
)
{
console
.
log
(
"
unregisterPlugin err:
"
+
JSON
.
stringify
(
err
));
}
```
## UserIdentityManager<sup>8+</sup>
获取用户身份管理类。
...
...
@@ -4820,7 +4932,7 @@ getAuthInfo(authType?: AuthType): Promise<Array<EnrolledCredInfo>>;
### onSetData<sup>8+</sup>
onSetData: (
pin
SubType: AuthSubType, data: Uint8Array) => void;
onSetData: (
auth
SubType: AuthSubType, data: Uint8Array) => void;
**系统接口:**
此接口为系统接口。
...
...
@@ -4832,7 +4944,7 @@ onSetData: (pinSubType: AuthSubType, data: Uint8Array) => void;
| 参数名 | 类型 | 必填 | 说明 |
| ---------- | ---------------------------------------- | ---- | ----------------------------------------------- |
|
pin
SubType |
[
AuthSubType
](
#authsubtype8
)
| 是 | 用于认证的凭据子类型。 |
|
auth
SubType |
[
AuthSubType
](
#authsubtype8
)
| 是 | 用于认证的凭据子类型。 |
| data | Uint8Array | 是 | 要设置的数据是凭据,用来在认证、添加、修改凭据操作。 |
**示例:**
...
...
@@ -4840,11 +4952,11 @@ onSetData: (pinSubType: AuthSubType, data: Uint8Array) => void;
let
password
=
new
Uint8Array
([
0
,
0
,
0
,
0
,
0
,
0
]);
let
passwordNumber
=
new
Uint8Array
([
1
,
2
,
3
,
4
]);
let
inputer
=
{
onGetData
:
(
pin
SubType
,
callback
)
=>
{
if
(
pin
SubType
==
account_osAccount
.
AuthSubType
.
PIN_NUMBER
)
{
callback
.
onSetData
(
pin
SubType
,
passwordNumber
);
onGetData
:
(
auth
SubType
,
callback
)
=>
{
if
(
auth
SubType
==
account_osAccount
.
AuthSubType
.
PIN_NUMBER
)
{
callback
.
onSetData
(
auth
SubType
,
passwordNumber
);
}
else
{
callback
.
onSetData
(
pin
SubType
,
password
);
callback
.
onSetData
(
auth
SubType
,
password
);
}
}
};
...
...
@@ -4858,7 +4970,7 @@ onSetData: (pinSubType: AuthSubType, data: Uint8Array) => void;
### onGetData<sup>8+</sup>
onGetData: (
pin
SubType: AuthSubType, callback: IInputData) => void;
onGetData: (
auth
SubType: AuthSubType, callback: IInputData) => void;
通知获取数据。
...
...
@@ -4877,11 +4989,11 @@ onGetData: (pinSubType: AuthSubType, callback: IInputData) => void;
let
password
=
new
Uint8Array
([
0
,
0
,
0
,
0
,
0
,
0
]);
let
passwordNumber
=
new
Uint8Array
([
1
,
2
,
3
,
4
]);
let
inputer
=
{
onGetData
:
(
pin
SubType
,
callback
)
=>
{
if
(
pin
SubType
==
account_osAccount
.
AuthSubType
.
PIN_NUMBER
)
{
callback
.
onSetData
(
pin
SubType
,
passwordNumber
);
onGetData
:
(
auth
SubType
,
callback
)
=>
{
if
(
auth
SubType
==
account_osAccount
.
AuthSubType
.
PIN_NUMBER
)
{
callback
.
onSetData
(
auth
SubType
,
passwordNumber
);
}
else
{
callback
.
onSetData
(
pin
SubType
,
password
);
callback
.
onSetData
(
auth
SubType
,
password
);
}
}
};
...
...
@@ -5157,6 +5269,7 @@ onAcquireInfo?: (module: number, acquire: number, extraInfo: any) => void;
| ----- | ----- | ---------------- |
| PIN | 1 | 指示PIN认证类型。 |
| FACE | 2 | 指示脸部认证类型。|
| DOMAIN
<sup>
9+
</sup>
| 1024 | 表示域认证类型。|
## AuthSubType<sup>8+</sup>
...
...
@@ -5173,6 +5286,7 @@ onAcquireInfo?: (module: number, acquire: number, extraInfo: any) => void;
| PIN_MIXED | 10002 | 表示自定义混合凭据。 |
| FACE_2D | 20000 | 指示2D 人脸凭证。 |
| FACE_3D | 20001 | 指示3D 人脸凭证。 |
| DOMAIN_MIXED
<sup>
9+
</sup>
| 10240001 | 表示域认证混合凭证。 |
## AuthTrustLevel<sup>8+</sup>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录