App-Android(使用App+htnl5框架,解决消息推送兼容SignalR问题)
loulijun2021
2022-10-19 d75b0b71c2feed580bf765c0d6007b3c1f17ca74
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta name="HandheldFriendly" content="true">
<meta name="MobileOptimized" content="320">
<title>OAuth Document</title>
<link rel="stylesheet" type="text/css" href="res/doc.css" charset="utf-8">
<link rel="stylesheet" type="text/css" href="res/prettify.sons.css" charset="utf-8">
<script type="text/javascript" src="res/doc.js" charset="utf-8"></script><script type="text/javascript" src="res/prettify.js" charset="utf-8"></script>
</head>
<body><div id="content" class="content">
<h1><a name="plus.oauth">oauth</a></h1>
<p>OAuth模块管理客户端的用户登录授权验证功能,允许应用访问第三方平台的资源。</p>
<h2>方法:</h2>
<ul><li>
<a href="#plus.oauth.getServices">getServices</a>: 获取登录授权认证服务列表</li></ul>
<h2>对象:</h2>
<ul>
<li>
<a href="#plus.oauth.AuthService">AuthService</a>: 登录授权认证服务对象</li>
<li>
<a href="#plus.oauth.AppleInfo">AppleInfo</a>: 苹果登录认证信息</li>
<li>
<a href="#plus.oauth.AuthOptions">AuthOptions</a>: JSON对象,授权认证参数选项</li>
<li>
<a href="#plus.oauth.AuthInfo">AuthInfo</a>: 登录授权认证信息</li>
<li>
<a href="#plus.oauth.UserInfo">UserInfo</a>: 登录授权用户信息</li>
</ul>
<h2>回调方法:</h2>
<ul>
<li>
<a href="#plus.oauth.ServicesSuccessCallback">ServicesSuccessCallback</a>: 获取登录授权认证服务成功回调</li>
<li>
<a href="#plus.oauth.AuthorizeSuccessCallback">AuthorizeSuccessCallback</a>: 授权认证成功回调函数</li>
<li>
<a href="#plus.oauth.LogoutSuccessCallback">LogoutSuccessCallback</a>: 注销登录授权认证操作成功回调函数</li>
<li>
<a href="#plus.oauth.SuccessCallback">SuccessCallback</a>: 登录授权认证服务操作成功回调函数</li>
<li>
<a href="#plus.oauth.ErrorCallback">ErrorCallback</a>: 登录授权认证服务操作失败回调函数</li>
</ul>
<h2>权限:</h2>
<p>permissions</p>
<pre class="prettyprint linenums">
{
// ...
"permissions":{
    // ...
    "OAuth": {
        "description": "登录鉴权"
    }
}
}
            </pre>
<h1><a name="plus.oauth.AuthService">AuthService</a></h1>
<p>登录授权认证服务对象</p>
<pre class="prettyprint linenums">
interface plus.oauth.AuthService {
    // Attributes
    attribute String id;
    attribute String description;
    attribute AppleInfo appleInfo;
    attribute AuthInfo authResult;
    attribute UserInfo userInfo;
    attribute JSON extra;
    
    // Methods 
    function void author(successCallback, errorCallback, options);
    function void login(successCallback, errorCallback, options);
    function void logout(successCallback, errorCallback);
    function void getUserInfo(successCallback, errorCallback);
    function void addPhoneNumber(successCallback, errorCallback);
}
                </pre>
<h2>说明:</h2>
<p class="des">
    AuthService对象用于表示登录授权认证服务,在JS中为对象,用于向系统进行登录授权认证操作。
                </p>
<h2>属性:</h2>
<ul>
<li>
<a href="#plus.oauth.AuthService.id">id</a>: 登录授权认证服务标识</li>
<li>
<a href="#plus.oauth.AuthService.description">description</a>: 登录授权认证服务描述</li>
<li>
<a href="#plus.oauth.AuthService.appleInfo">appleInfo</a>: 苹果登录认证数据</li>
<li>
<a href="#plus.oauth.AuthService.authResult">authResult</a>: 登录认证数据</li>
<li>
<a href="#plus.oauth.AuthService.userInfo">userInfo</a>: 登录用户信息</li>
<li>
<a href="#plus.oauth.AuthService.extra">extra</a>: 登录授权认证扩展信息</li>
</ul>
<h2>方法:</h2>
<ul>
<li>
<a href="#plus.oauth.AuthService.authorize">authorize</a>: 请求授权认证</li>
<li>
<a href="#plus.oauth.AuthService.login">login</a>: 请求登录认证</li>
<li>
<a href="#plus.oauth.AuthService.logout">logout</a>: 注销登录认证</li>
<li>
<a href="#plus.oauth.AuthService.getUserInfo">getUserInfo</a>: 获取用户信息</li>
</ul>
<h1><a name="plus.oauth.AppleInfo">AppleInfo</a></h1>
<p>苹果登录认证信息</p>
<pre class="prettyprint linenums">
interface plus.oauth.AppleInfo {
    attribute String user;
    attribute String state;
    attribute String email:
    attribute JSON fullName;
    attribute String authorizationCode;
    attribute String identityToken;
    attribute Number realUserStatus;
    attribute String scope;
}
                </pre>
<h2>说明:</h2>
<p class="des">
    此对象仅在使用苹果登录时有效,用于保存苹果登录返回的数据。
                </p>
<h2>属性:</h2>
<ul>
<li>user: <em>(<font class="type">String</font>
    类型
)</em>苹果用户唯一标识符<br>
</li>
<li>state: <em>(<font class="type">String</font>
    类型
)</em>验证信息状态<br>
</li>
<li>email: <em>(<font class="type">String</font>
    类型
)</em>用户共享的可选电子邮件<br>
</li>
<li>fullName: <em>(<font class="type">JSON</font>
    类型
)</em>用户共享的可选全名<br><p>
    可能包括以下属性:
    namePrefix - String类型,名字前缀,头衔、敬称;
    givenName - String类型,名字;
    middleName - String类型,中间名;
    familyName - String类型,姓;
    nameSuffix - String类型,名字后缀,学位、荣誉;
    nickName - String类型,昵称。
                        </p>
</li>
<li>authorizationCode: <em>(<font class="type">String</font>
    类型
)</em>验证数据<br>
</li>
<li>identityToken: <em>(<font class="type">String</font>
    类型
)</em>Web令牌(JWT)<br>
</li>
<li>realUserStatus: <em>(<font class="type">Number</font>
    类型
)</em>标识用户是否为真实的人<br><p>
    0 - 当前平台不支持,忽略该值;
    1 - 无法确认;
    2 - 用户真实性非常高。
                        </p>
</li>
</ul>
<h1><a name="plus.oauth.AuthOptions">AuthOptions</a></h1>
<p>JSON对象,授权认证参数选项</p>
<pre class="prettyprint linenums">
interface plus.oauth.AuthOptions {
    attribute String scope;
    attribute String state;
    attribute String appid;
    attribute String appkey;
    attribute String appsecret;
    attribute String redirect_uri;
}
                </pre>
<h2>说明:</h2>
<p class="des">
    此对象支持的属性值由登录授权认证服务定义。
    例如“微信”,则可配置以下参数:
    scope - 应用授权作用域;
    state - 用于保持请求和回调的状态参数。
                </p>
<h2>属性:</h2>
<ul>
<li>scope: <em>(<font class="type">String</font>
    类型
)</em>申请的权限作用范围<br><p>
    如果存在多个权限,则以","符号分割。
                        </p>
</li>
<li>state: <em>(<font class="type">String</font>
    类型
)</em>客户端的当前状态,可以指定任意值,登录认证后原封不动的返回保存到AuthService对象的extra中<br>
</li>
<li>appid: <em>(<font class="type">String</font>
    类型
)</em>登录授权认证服务平台申请的appid<br><p>
    动态设置登录授权服务中需要使用的appid,仅需要此参数的登录授权服务(如“微信登录”、“QQ登录”)支持。
    如果未设置则使用运行环境中内置的appid值(如在HBuilder中可在manifest.json的SDK配置项中进行设置)。
                        </p>
</li>
<li>appkey: <em>(<font class="type">String</font>
    类型
)</em>登录授权认证服务平台申请的appkey<br><p>
    动态设置登录授权服务中需要使用的appkey,仅需要此参数的登录授权服务(如“新浪微博登录”、“360登录”)支持。
    如果未设置则使用运行环境中内置的appkey值(如在HBuilder中可在manifest.json的SDK配置项中进行设置)。
                        </p>
</li>
<li>appsecret: <em>(<font class="type">String</font>
    类型
)</em>登录授权认证服务平台申请的appsecret<br><p>
    动态设置登录授权服务中需要使用的appsecret,仅需要此参数的登录授权服务(如“微信登录”、“新浪微博登录”)支持。
    如果未设置则使用运行环境中内置的appkey值(如在HBuilder中可在manifest.json的SDK配置项中进行设置);
    当开放平台申请的appsecret值涉及到安全问题时,可在应用运行时从服务器获取,然后通过此api动态设置。
                        </p>
</li>
<li>redirect_url: <em>(<font class="type">String</font>
    类型
)</em>登录授权认证服务平台申请的redirect_url<br><p>
    动态设置登录授权服务中需要使用的redirect_url,仅需要此参数的登录授权服务(如“新浪微博登录”)支持。
    如果未设置则使用运行环境中内置的redirect_url值(如在HBuilder中可在manifest.json的SDK配置项中进行设置)。
                        </p>
</li>
</ul>
<h1><a name="plus.oauth.AuthInfo">AuthInfo</a></h1>
<p>登录授权认证信息</p>
<pre class="prettyprint linenums">
interface plus.oauth.AuthInfo {
    attribute String openid;
    attribute String access_token;
    attribute String expires_in:
    attribute String refresh_token;
    attribute String scope;
}
                </pre>
<h2>说明:</h2>
<p class="des">
    此对象仅定义标准属性,登录授权认证服务可扩展自定义数据。
    例如“微信”登录授权服务,则包括以下数据:
    unionid - 用户统一标识,针对一个微信开放平台帐号下的应用,同一用户的unionid是唯一的。
                </p>
<h2>属性:</h2>
<ul>
<li>access_token: <em>(<font class="type">String</font>
    类型
)</em>登录授权的访问令牌<br><p>
    如果登录授权服务不支持此属性,则返回"undefined"。
                        </p>
</li>
<li>openid: <em>(<font class="type">String</font>
    类型
)</em>登录授权用户的唯一标识<br><p>
    如果登录授权服务不支持此属性,则返回"undefined"。
                        </p>
</li>
<li>expires_in: <em>(<font class="type">String</font>
    类型
)</em>登录授权访问令牌过期时间<br><p>
    单位为秒,如果登录授权服务不支持此属性,则返回"undefined"。
                        </p>
</li>
<li>refresh_token: <em>(<font class="type">String</font>
    类型
)</em>登录授权的更新令牌<br><p>
    用来获取下一次的访问令牌,如果登录授权服务不支持此属性,则返回"undefined"。
                        </p>
</li>
<li>scope: <em>(<font class="type">String</font>
    类型
)</em>登录授权的权限范围<br><p>
    如果存在多个权限,则以","符号分割。
                        </p>
</li>
</ul>
<h1><a name="plus.oauth.UserInfo">UserInfo</a></h1>
<p>登录授权用户信息</p>
<pre class="prettyprint linenums">
interface plus.oauth.UserInfo {
    attribute String openid;
    attribute String headimgurl:
    attribute String nickname;
    attribute String email;
    attribute String phonenumber;
    attribute String sex;
    attribute String province;
    attribute String city;
    attribute String country;
}
                </pre>
<h2>说明:</h2>
<p class="des">
    用于保存登录授权用户的信息。
    此对象仅定义标准属性,登录授权认证服务可扩展自定义数据。
    例如“微信”登录授权服务,可能包括以下自定义数据:
    privilege - 用户特权信息,json数组,如微信沃卡用户为(chinaunicom);
    unionid - 用户统一标识,针对一个微信开放平台帐号下的应用,同一用户的unionid是唯一的。
                </p>
<h2>属性:</h2>
<ul>
<li>openid: <em>(<font class="type">String</font>
    类型
)</em>登录授权用户的唯一标识<br><p>
    如果登录授权服务不支持此属性,则返回"undefined"。
                        </p>
</li>
<li>headimgurl: <em>(<font class="type">String</font>
    类型
)</em>登录授权用户的头像图片地址<br><p>
    要求为"http://"或"https://"开头的地址,如果登录授权服务不支持此属性,则返回"undefined"。
                        </p>
</li>
<li>nickname: <em>(<font class="type">String</font>
    类型
)</em>登录授权用户的昵称<br><p>
    如果登录授权服务不支持此属性,则返回"undefined"。
                        </p>
</li>
<li>email: <em>(<font class="type">String</font>
    类型
)</em>登录授权用户的邮箱地址<br><p>
    如果登录授权服务不支持此属性,则返回"undefined"。
                        </p>
</li>
<li>phonenumber: <em>(<font class="type">String</font>
    类型
)</em>登录授权用户的电话号码<br><p>
    如果登录授权服务不支持此属性,则返回"undefined"。
                        </p>
</li>
<li>sex: <em>(<font class="type">String</font>
    类型
)</em>登录授权用户的性别<br><p>
    1为男性,2为女性。
    如果登录授权服务不支持此属性,则返回"undefined"。
                        </p>
</li>
<li>province: <em>(<font class="type">String</font>
    类型
)</em>登录授权用户注册的省份信息<br><p>
    如果登录授权服务不支持此属性,则返回"undefined"。
                        </p>
</li>
<li>city: <em>(<font class="type">String</font>
    类型
)</em>登录授权用户注册的城市信息<br><p>
    如果登录授权服务不支持此属性,则返回"undefined"。
                        </p>
</li>
<li>country: <em>(<font class="type">String</font>
    类型
)</em>登录授权用户注册的国家信息<br><p>
    如果登录授权服务不支持此属性,则返回"undefined"。
                        </p>
</li>
</ul>
<h1><a name="plus.oauth.ServicesSuccessCallback">ServicesSuccessCallback</a></h1>
<p>获取登录授权认证服务成功回调</p>
<pre class="prettyprint linenums">
void ServicesSuccessCallback( services ) {
    // Get oauth services success code
}
                </pre>
<h2>说明:</h2>
<p class="des">
    当获取登录授权认证服务列表成功时触发,并通过services参数返回运行环境支持的登录授权认证服务列表。
                </p>
<h2>参数:</h2>
<ul><li>services: 
        <em>(
            <font class="type">Array</font>[
                        <a href="#plus.oauth.AuthService">AuthService</a>
                        ]
                    
            )
            必选 </em>运行环境支持的登录授权认证服务列表<br>
    运行环境支持的登录授权认证服务列表数组,可通过services.length获取服务列表的数目。
    如果当前运行环境没有支持的登录授权认证服务,则返回空数组。
                        </li></ul>
<h2>返回值:</h2>
<font class="type">void</font>
            : 无<h1><a name="plus.oauth.AuthorizeSuccessCallback">AuthorizeSuccessCallback</a></h1>
<p>授权认证成功回调函数</p>
<pre class="prettyprint linenums">
void onAuthorizeSuccess(event){
      // authorize code
}
                </pre>
<h2>说明:</h2>
<p class="des">
    授权认证成功时触发,并返回操作结果。
                </p>
<h2>参数:</h2>
<ul><li>event: 
        <em>(
            <font class="type">JSON</font>
            )
            必选 </em>授权认证回调参数<br>
    包括以下字段:
        event.target - 授权认证服务对象;
        event.scope - 申请的权限作用范围,调用authorize方法传入的scope值;
        event.state - 自定义参数,调用authorize方法传入的state值;
        event.code - 用户换取access_token的code;
        event.lang - 微信客户端当前语言;
        event.country - 微信用户当前国家信息。
                        </li></ul>
<h2>返回值:</h2>
<font class="type">void</font>
            : 无<h1><a name="plus.oauth.LogoutSuccessCallback">LogoutSuccessCallback</a></h1>
<p>注销登录授权认证操作成功回调函数</p>
<pre class="prettyprint linenums">
void onLogoutSuccess(event){
      // logout code
}
                </pre>
<h2>说明:</h2>
<p class="des">
    注销登录授权认证成功时触发,并返回操作结果。
                </p>
<h2>参数:</h2>
<ul><li>event: 
        <em>(
            <font class="type">JSON</font>
            )
            必选 </em>注销登录授权认证操作回调事件参数<br>
    包括以下参数:
    event.target - 表示登录授权认证服务对象;
    其它属性可保存注销登录授权的扩展数据。
                        </li></ul>
<h2>返回值:</h2>
<font class="type">void</font>
            : 无<h1><a name="plus.oauth.SuccessCallback">SuccessCallback</a></h1>
<p>登录授权认证服务操作成功回调函数</p>
<pre class="prettyprint linenums">
void onSuccess(event){
      // auth code
}
                </pre>
<h2>说明:</h2>
<p class="des">
    登录授权认证服务操作如请求登录授权认证、获取登录授权用户信息成功时触发,并返回操作结果。
                </p>
<h2>参数:</h2>
<ul><li>event: 
        <em>(
            <font class="type">JSON</font>
            )
            必选 </em>登录授权认证服务操作回调事件参数<br>
    包括以下参数:
    event.target - 表示登录授权认证服务对象,可以通过此对象的authResult、userInfo属性来获取操作结果信息。
                        </li></ul>
<h2>返回值:</h2>
<font class="type">void</font>
            : 无<h1><a name="plus.oauth.ErrorCallback">ErrorCallback</a></h1>
<p>登录授权认证服务操作失败回调函数</p>
<pre class="prettyprint linenums">
void onError(error){
    // Error code
}
                </pre>
<h2>说明:</h2>
<p class="des">
    登录授权认证服务操作如请求登录授权认证、注销登录授权认证、获取登录授权用户信息失败时触发,并返回错误信息。
                </p>
<h2>参数:</h2>
<ul><li>error: 
        <em>(
            <font class="type">Exception</font>
            )
            必选 </em>操作失败错误信息<br>
    包括以下参数:
    error.code - 表示错误代码;
    error.message - 错误描述信息;
                        </li></ul>
<h2>返回值:</h2>
<font class="type">void</font>
            : 无<br><br>
</div></body>
</html>