oauth.html 17 KB

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