{"id":113997,"date":"2026-10-08T07:49:59","date_gmt":"2026-10-07T23:49:59","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/113997.html"},"modified":"2026-10-08T07:49:59","modified_gmt":"2026-10-07T23:49:59","slug":"account-kit-%e5%8d%8e%e4%b8%ba%e8%b4%a6%e5%8f%b7%e6%9c%8d%e5%8a%a1%e4%bb%8b%e7%bb%8d","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/113997.html","title":{"rendered":"Account Kit \u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u4ecb\u7ecd"},"content":{"rendered":"<h3>Account Kit&#xff08;\u534e\u4e3a\u8d26\u53f7\u670d\u52a1&#xff09;\u7b80\u4ecb<\/h3>\n<h4>\u573a\u666f\u4ecb\u7ecd<\/h4>\n<p>Account Kit&#xff08;\u534e\u4e3a\u8d26\u53f7\u670d\u52a1&#xff09;\u63d0\u4f9b\u7b80\u5355\u3001\u5feb\u901f\u3001\u5b89\u5168\u7684\u767b\u5f55\u529f\u80fd&#xff0c;\u8ba9\u7528\u6237\u5feb\u6377\u5730\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u5e94\u7528\u3002\u7528\u6237\u6388\u6743\u540e&#xff0c;Account Kit\u53ef\u63d0\u4f9b\u5934\u50cf\u3001\u6635\u79f0\u3001\u624b\u673a\u53f7\u7801\u7b49\u4fe1\u606f&#xff0c;\u5e2e\u52a9\u5e94\u7528\u66f4\u4e86\u89e3\u7528\u6237\u3002<\/p>\n<h4>\u80fd\u529b\u8303\u56f4<\/h4>\n<ul>\n<li>\u767b\u5f55&#xff1a;\u63d0\u4f9b\u767b\u5f55\u670d\u52a1&#xff0c;\u8ba9\u7528\u6237\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u5feb\u901f\u767b\u5f55\u5e94\u7528\u3002<\/li>\n<li>\u83b7\u53d6\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u4fe1\u606f&#xff1a;\u83b7\u53d6\u7528\u6237\u7684\u57fa\u672c\u5f00\u653e\u4fe1\u606f&#xff0c;\u5982\u5934\u50cf\u3001\u6635\u79f0\u3001\u624b\u673a\u53f7\u3001\u6536\u8d27\u5730\u5740\u3001\u53d1\u7968\u62ac\u5934\u3001\u98ce\u9669\u7b49\u7ea7\u3002<\/li>\n<li>\u672a\u6210\u5e74\u4eba\u6a21\u5f0f&#xff1a;\u83b7\u53d6\u672a\u6210\u5e74\u4eba\u6a21\u5f0f\u7684\u5f00\u542f\u72b6\u6001\u53ca\u5e74\u9f84\u6bb5\u4fe1\u606f\u4ee5\u8fdb\u884c\u5185\u5bb9\u5206\u7ea7&#xff0c;\u8c03\u6574\u672a\u6210\u5e74\u4eba\u76f8\u5173\u8bbe\u7f6e\u65f6\u53ef\u589e\u52a0\u5bb6\u957f\u9a8c\u8bc1&#xff0c;\u8fd8\u53ef\u8c03\u7528\u63a5\u53e3\u5f15\u5bfc\u7528\u6237\u5f00\u542f\u6216\u5173\u95ed\u672a\u6210\u5e74\u4eba\u6a21\u5f0f\u3002<\/li>\n<\/ul>\n<h4>\u4eae\u70b9\/\u7279\u5f81<\/h4>\n<h5>\u4e00\u952e\u767b\u5f55<\/h5>\n<p>\u5e94\u7528\u53ef\u4ee5\u901a\u8fc7\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u529f\u80fd\u83b7\u53d6\u624b\u673a\u53f7\u6388\u6743\u5e76\u5b8c\u6210\u767b\u5f55&#xff0c;\u5e2e\u52a9\u5e94\u7528\u5efa\u7acb\u7528\u6237\u4f53\u7cfb\u6216\u8005\u4e0e\u73b0\u6709\u7528\u6237\u4f53\u7cfb\u5bf9\u63a5\u3002\u4f18\u70b9\u5982\u4e0b&#xff1a;<\/p>\n<ul>\n<li>\u4fbf\u6377\u6027&#xff1a;\u4e00\u952e\u5b8c\u6210\u767b\u5f55\u548c\u624b\u673a\u53f7\u6388\u6743&#xff0c;\u4e3a\u7528\u6237\u63d0\u4f9b\u66f4\u52a0\u4fbf\u6377\u6613\u7528\u7684\u767b\u5f55\u4f53\u9a8c\u3002<\/li>\n<li>\u5168\u573a\u666f&#xff1a;Phone\u3001Tablet\u3001PC\/2in1\u3001TV\u8bbe\u5907\u767b\u5f55\u4f53\u9a8c\u4e00\u81f4&#xff0c;\u4fdd\u969c\u7528\u6237\u6570\u636e\u8d44\u4ea7\u8de8\u7aef\u5ef6\u7eed\u3002<\/li>\n<li>\u6548\u7387\u9ad8&#xff1a;\u65e0\u9700\u5355\u72ec\u96c6\u6210SDK&#xff0c;\u51cf\u5c11\u5f00\u53d1\u8005\u5f00\u53d1\u548c\u8fd0\u8425\u6210\u672c\u3002<\/li>\n<\/ul>\n<h5>\u672a\u6210\u5e74\u4eba\u6a21\u5f0f<\/h5>\n<p>\u5e94\u7528\u53ef\u4ee5\u901a\u8fc7\u672a\u6210\u5e74\u4eba\u6a21\u5f0f\u7684\u76f8\u5173\u80fd\u529b\u5e2e\u52a9\u5bb6\u957f\u5feb\u901f\u5f00\u542f\u672a\u6210\u5e74\u4eba\u6a21\u5f0f&#xff0c;\u5b88\u62a4\u672a\u6210\u5e74\u4eba\u5065\u5eb7\u4f7f\u7528\u7535\u5b50\u8bbe\u5907\u548c\u5e94\u7528\u3002\u6709\u4ee5\u4e0b\u4f18\u70b9&#xff1a;<\/p>\n<ul>\n<li>\u4fbf\u6377\u6027&#xff1a;\u7edf\u4e00\u7ba1\u63a7\u672a\u6210\u5e74\u4eba\u6a21\u5f0f\u5165\u53e3&#xff0c;\u4ec5\u9700\u4e00\u6b21\u8bbe\u7f6e&#xff0c;\u5e94\u7528\u8054\u52a8\u751f\u6548&#xff0c;\u907f\u514d\u5404\u4e2a\u5e94\u7528\u5185\u5355\u72ec\u5f00\u542f\u7684\u7e41\u7410\u64cd\u4f5c&#xff0c;\u63d0\u5347\u7528\u6237\u4f53\u9a8c\u3002<\/li>\n<li>\u5168\u9762\u5b88\u62a4&#xff1a;\u5e94\u7528\u4e0e\u7cfb\u7edf\u8054\u52a8&#xff0c;\u4e3a\u5b69\u5b50\u63d0\u4f9b\u5168\u9762\u7684\u5b88\u62a4\u63aa\u65bd&#xff0c;\u5982\u4ec5\u5141\u8bb8\u8bbf\u95ee\u9002\u9f84\u5e94\u7528\u3001\u589e\u5f3a\u9690\u79c1\u4fdd\u62a4\u3001\u9650\u5236\u8bbe\u5907\u4f7f\u7528\u65f6\u957f\u7b49\u3002<\/li>\n<\/ul>\n<h4>\u793a\u4f8b\u4ee3\u7801<\/h4>\n<p>Account Kit\u63d0\u4f9b\u7684SampleCode\u793a\u4f8b\u5de5\u7a0b\u4f53\u73b0\u4e86Account Kit\u7684\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u3001\u9759\u9ed8\u767b\u5f55\u3001\u83b7\u53d6\u5934\u50cf\u6635\u79f0\u3001\u83b7\u53d6\u624b\u673a\u53f7\u3001\u6536\u8d27\u5730\u5740\u3001\u53d1\u7968\u62ac\u5934\u3001\u672a\u6210\u5e74\u4eba\u6a21\u5f0f\u7b49\u7279\u6027&#xff0c;\u53ef\u53c2\u8003\u8be5\u5de5\u7a0b\u8fdb\u884c\u5e94\u7528\u7684\u76f8\u5173\u5185\u5bb9\u5f00\u53d1\u3002<\/p>\n<h4>\u7ea6\u675f\u4e0e\u9650\u5236<\/h4>\n<table>\n<tr>Account Kit\u63d0\u4f9b\u7684\u80fd\u529b\u652f\u6301\u7684\u8bbe\u5907\u7c7b\u578b<\/tr>\n<tbody>\n<tr>\n<td>\u83b7\u53d6\u5934\u50cf\u6635\u79f0<\/td>\n<td>Phone\u3001Tablet\u3001PC\/2in1\u3001Wearable\u3001TV<\/td>\n<\/tr>\n<tr>\n<td>\u83b7\u53d6\u624b\u673a\u53f7<\/td>\n<td>Phone\u3001Tablet\u3001PC\/2in1\u3001Wearable\u3001TV<\/td>\n<\/tr>\n<tr>\n<td>\u83b7\u53d6\u6536\u8d27\u5730\u5740<\/td>\n<td>Phone\u3001Tablet\u3001PC\/2in1\u3001TV<\/td>\n<\/tr>\n<tr>\n<td>\u83b7\u53d6\u53d1\u7968\u62ac\u5934<\/td>\n<td>Phone\u3001Tablet\u3001PC\/2in1<\/td>\n<\/tr>\n<tr>\n<td>\u83b7\u53d6\u98ce\u9669\u7b49\u7ea7<\/td>\n<td>Phone\u3001Tablet\u3001PC\/2in1\u3001Wearable\u3001TV<\/td>\n<\/tr>\n<tr>\n<td>\u83b7\u53d6\u5b9e\u540d\u5e74\u9f84\u6bb5<\/td>\n<td>Phone\u3001Tablet\u3001PC\/2in1\u3001Wearable\u3001TV<\/td>\n<\/tr>\n<tr>\n<td>\u672a\u6210\u5e74\u4eba\u6a21\u5f0f<\/td>\n<td>Phone\u3001Tablet\u3001PC\/2in1\u3001TV<\/td>\n<\/tr>\n<tr>\n<td>\u767b\u5f55\u6309\u94ae\u7ec4\u4ef6<\/td>\n<td>Phone\u3001Tablet\u3001PC\/2in1\u3001TV<\/td>\n<\/tr>\n<tr>\n<td>\u767b\u5f55\u9762\u677f\u7ec4\u4ef6<\/td>\n<td>Phone\u3001Tablet\u3001PC\/2in1\u3001TV<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>\u652f\u6301\u7684\u56fd\u5bb6\/\u5730\u533a<\/h4>\n<p>\u8bf7\u53c2\u89c1\u652f\u6301\u7684\u56fd\u5bb6\/\u5730\u533a\u3002<\/p>\n<h4>\u6a21\u62df\u5668\u652f\u6301\u60c5\u51b5<\/h4>\n<p>\u672cKit\u652f\u6301\u6a21\u62df\u5668&#xff0c;\u4f46\u4e0e\u771f\u673a\u5b58\u5728\u90e8\u5206\u80fd\u529b\u5dee\u5f02&#xff0c;\u5177\u4f53\u5dee\u5f02\u5982\u4e0b\u3002<\/p>\n<p>\u901a\u7528\u5dee\u5f02&#xff1a;\u8bf7\u53c2\u89c1\u201c\u6a21\u62df\u5668\u4e0e\u771f\u673a\u7684\u5dee\u5f02\u201d\u3002<\/p>\n<p>\u6a21\u62df\u5668\u4ec5\u652f\u6301\u5e94\u7528\u7edf\u4e00\u8ba4\u8bc1\u670d\u52a1authentication\u7684\u767b\u5f55\u548c\u6388\u6743\u80fd\u529b\u3001\u534e\u4e3a\u8d26\u53f7Button\u767b\u5f55\u7ec4\u4ef6\u3002<\/p>\n<p>\u4e0d\u652f\u6301Wearable\u8bbe\u5907\u6a21\u62df\u5668\u3002<\/p>\n<h3>\u5f00\u53d1\u8005\u4f7f\u7528Account Kit\u7684\u767b\u5f55\u80fd\u529b\u7684\u7ba1\u7406\u7ec6\u5219<\/h3>\n<p>\u4e3a\u4e86\u4fdd\u62a4\u7528\u6237\u9690\u79c1\u4fe1\u606f&#xff0c;\u786e\u4fdd\u7528\u6237\u83b7\u5f97\u826f\u597d\u7684\u767b\u5f55\u4f53\u9a8c&#xff0c;\u6839\u636e\u300a\u534e\u4e3a\u5f00\u53d1\u8005\u670d\u52a1\u534f\u8bae\u300b\u3001\u300a\u534e\u4e3aAPIs\u4f7f\u7528\u534f\u8bae\u300b\u3001\u300a\u5e94\u7528\u5ba1\u6838\u6307\u5357\u300b\u3001\u300a\u5143\u670d\u52a1\u5ba1\u6838\u6307\u5357\u300b\u7b49\u76f8\u5173\u534f\u8bae\u6761\u6b3e\u53ca\u73b0\u884c\u6cd5\u5f8b\u6cd5\u89c4&#xff0c;\u5e73\u53f0\u5236\u5b9a\u4e86\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u7ba1\u7406\u7ec6\u5219&#xff0c;\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u7684\u5e94\u7528\u8bf7\u9075\u7167\u6267\u884c&#xff0c;\u5177\u4f53\u8981\u6c42\u5982\u4e0b&#xff1a;<\/p>\n<h4>\u4e0a\u67b6\u5ba1\u6838\u8981\u6c42<\/h4>\n<p>\u4e3a\u4e86\u5e2e\u52a9\u7528\u6237\u7701\u53bb\u591a\u6b21\u8f93\u5165\u4e0d\u540c\u5e94\u7528\u8d26\u53f7\u767b\u5f55\u7684\u7e41\u7410\u8fc7\u7a0b&#xff0c;\u6211\u4eec\u4e3aHarmonyOS\u5e94\u7528\u548c\u5143\u670d\u52a1\u5f00\u53d1\u8005\u63d0\u4f9b\u4e86\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u5feb\u6377\u767b\u5f55\u7684\u80fd\u529b\u3002\u63d0\u4ea4\u81f3\u534e\u4e3a\u5e94\u7528\u5e02\u573a\u7684HarmonyOS\u5e94\u7528\u548c\u5143\u670d\u52a1&#xff0c;\u9700\u8981\u9075\u5faa\u5982\u4e0b\u89c4\u8303&#xff1a;<\/p>\n<p>&#xff08;1&#xff09;\u5982\u679c\u5e94\u7528\u652f\u6301\u7528\u6237\u4f7f\u7528\u7b2c\u4e09\u65b9\u8d26\u53f7\u767b\u5f55&#xff0c;\u5219\u8be5\u5e94\u7528\u9700\u63d0\u4f9b\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u9009\u9879\u3002\u7528\u6237\u53ef\u901a\u8fc7\u534e\u4e3a\u8d26\u53f7\u5feb\u6377\u5730\u767b\u5f55\u60a8\u7684\u5e94\u7528&#xff0c;\u5e76\u83b7\u5f97\u534e\u4e3a\u8d26\u53f7\u7684\u5b89\u5168\u914d\u7f6e\u3002<\/p>\n<p>&#xff08;2&#xff09;\u5982\u679c\u5143\u670d\u52a1\u5185\u9700\u8981\u6784\u5efa\u8d26\u53f7\u4f53\u7cfb\u65f6&#xff0c;\u5fc5\u987b\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u80fd\u529b\u3002<\/p>\n<h4>\u767b\u5f55\u89c4\u8303<\/h4>\n<p>\u534e\u4e3a\u8d26\u53f7\u63d0\u4f9b\u767b\u5f55\u8bbe\u8ba1\u89c4\u8303&#xff0c;\u4fdd\u969cHarmonyOS\u5e94\u7528\u62e5\u6709\u7b80\u5355\u6613\u7528\u3001\u9ad8\u6548\u4e00\u81f4\u3001\u5feb\u901f\u5b89\u5168\u7684\u767b\u5f55\u4f53\u9a8c\u3002\u5e2e\u52a9\u7528\u6237\u4f7f\u7528\u5df2\u6709\u7684\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u6240\u6709\u7684\u5e94\u7528\u3002\u6709\u5173\u8bbe\u8ba1\u89c4\u8303&#xff0c;\u8bf7\u53c2\u9605\u534e\u4e3a\u8d26\u53f7\u5f00\u653e\u767b\u5f55\u3002<\/p>\n<h4>\u9644\u5219<\/h4>\n<p>\u672c\u7ec6\u5219\u662f\u4e00\u4efd\u52a8\u6001\u66f4\u65b0\u7684\u6587\u6863&#xff0c;\u6211\u4eec\u4f1a\u6839\u636e\u76f8\u5173\u6cd5\u5f8b\u6cd5\u89c4\u7684\u53d8\u5316\u4ee5\u53ca\u884c\u4e1a\u53d1\u5c55&#xff0c;\u4e0d\u5b9a\u671f\u5bf9\u7ec6\u5219\u5185\u5bb9\u8fdb\u884c\u4fee\u6539\u6216\u66f4\u65b0&#xff0c;\u8bf7\u60a8\u6301\u7eed\u5173\u6ce8\u672c\u7ec6\u5219&#xff0c;\u4ee5\u4fbf\u83b7\u5f97\u6700\u65b0\u4fe1\u606f\u3002<\/p>\n<h3>\u5f00\u53d1\u51c6\u5907<\/h3>\n<h4>\u914d\u7f6e\u7b7e\u540d\u548c\u6307\u7eb9<\/h4>\n<p>\u8bf7\u53c2\u8003\u201c\u5e94\u7528\u5f00\u53d1\u51c6\u5907\u201d\u7ae0\u8282&#xff0c;\u5b8c\u6210\u4ee5\u4e0b\u64cd\u4f5c\u6b65\u9aa4&#xff1a;<\/p>\n<p>\u521b\u5efa\u9879\u76ee\u548c\u5de5\u7a0b&#xff08;\u5982\u5df2\u5b8c\u6210&#xff0c;\u8bf7\u8df3\u8fc7\u6b64\u6b65\u9aa4&#xff09;\u3002<\/p>\n<p>\u914d\u7f6e\u7b7e\u540d\u4fe1\u606f\u3002\u9488\u5bf9\u5f00\u53d1\u8c03\u8bd5\u573a\u666f&#xff0c;\u4eceDevEco Studio 26.0.0 Beta2\u7248\u672c\u5f00\u59cb&#xff0c;\u65b0\u589e\u4e86\u66f4\u9ad8\u6548\u7684\u81ea\u52a8\u7b7e\u540d\u65b9\u6848&#xff0c;\u5f00\u53d1\u8005\u53ef\u4ee5\u9009\u62e9\u4ee5\u4e0b\u5176\u4e2d\u4e00\u79cd\u65b9\u5f0f\u8fdb\u884c\u8c03\u8bd5\u9636\u6bb5\u7684\u5e94\u7528\u7b7e\u540d\u3002<\/p>\n<p>\u81ea\u52a8\u7b7e\u540d&#xff1a;<\/p>\n<p>\u5e94\u7528\u8fd0\u884c\u7684HarmonyOS\u7cfb\u7edf\u7248\u672c\u4f4e\u4e8eHarmonyOS 6.0.0(20)\u65f6&#xff0c;\u4ec5\u672a\u6210\u5e74\u4eba\u6a21\u5f0f\u63a5\u53e3\u652f\u6301\u81ea\u52a8\u7b7e\u540d\u3002<\/p>\n<p>\u5e94\u7528\u8fd0\u884c\u7684HarmonyOS\u7cfb\u7edf\u7248\u672c\u4e3aHarmonyOS 6.0.0(20)\u53ca\u4ee5\u4e0a\u65f6&#xff0c;\u6240\u6709\u63a5\u53e3\u5747\u652f\u6301\u4f7f\u7528\u81ea\u52a8\u7b7e\u540d\u65b9\u5f0f\u8fdb\u884c\u914d\u7f6e\u3002<\/p>\n<p>\u624b\u52a8\u7b7e\u540d&#xff1a;<\/p>\n<p>\u6240\u6709\u63a5\u53e3\u5747\u652f\u6301\u4f7f\u7528\u624b\u52a8\u7b7e\u540d\u65b9\u5f0f\u914d\u7f6e\u7b7e\u540d\u3002<\/p>\n<p>\u6dfb\u52a0\u516c\u94a5\u6307\u7eb9\u3002<\/p>\n<p>\u6ce8\u610f<\/p>\n<p>\u53d1\u5e03\u9636\u6bb5&#xff0c;\u8bf7\u53c2\u8003\u53d1\u5e03\u5e94\u7528&#xff0c;\u91cd\u65b0\u914d\u7f6e\u7528\u4e8e\u5e94\u7528\u53d1\u5e03\u7684\u7b7e\u540d\u4fe1\u606f\u3001\u6dfb\u52a0\u516c\u94a5\u6307\u7eb9&#xff08;\u5fc5\u9009&#xff09;\u3002<\/p>\n<p>\u68c0\u67e5\u662f\u5426\u9700\u8981\u914d\u7f6e\u516c\u94a5\u6307\u7eb9&#xff1a;\u5e94\u7528\u4ec5\u63a5\u5165\u672a\u6210\u5e74\u4eba\u6a21\u5f0f\u6216compatibleSdkVersion&gt;&#061;20\u4e0d\u9700\u8981\u914d\u7f6e\u516c\u94a5\u6307\u7eb9&#xff0c;\u5176\u4ed6\u573a\u666f\u5747\u9700\u914d\u7f6e\u3002<\/p>\n<p>\u68c0\u67e5\u516c\u94a5\u6307\u7eb9\u662f\u5426\u914d\u7f6e\u6210\u529f&#xff1a;\u8bf7\u5728\u5f00\u53d1\u4e0e\u670d\u52a1\u4e2d\u9009\u62e9\u5bf9\u5e94\u7684\u9879\u76ee\u548c\u5e94\u7528&#xff0c;\u68c0\u67e5\u662f\u5426\u5df2\u6210\u529f\u914d\u7f6e\u8be5\u5e94\u7528\u7684\u516c\u94a5\u6307\u7eb9\u3002<\/p>\n<p>\u516c\u94a5\u6307\u7eb9\u6700\u8fdf\u4f1a\u572825\u5c0f\u65f6\u540e\u751f\u6548\u3002<\/p>\n<p>&#xff08;\u53ef\u9009&#xff09; \u914d\u7f6e\u516c\u94a5\u6307\u7eb910\u5206\u949f\u540e&#xff0c;\u60a8\u53ef\u901a\u8fc7\u4fee\u6539\u5e94\u7528\u5de5\u7a0b\u4e2dapp.json5\u914d\u7f6e\u6587\u4ef6\u7684versionCode\u89e6\u53d1\u516c\u94a5\u6307\u7eb9\u751f\u6548\u3002<\/p>\n<p>\u56fe1 \u4fee\u6539\u524d<\/p>\n<p>\u56fe2 \u4fee\u6539\u540e<\/p>\n<h4>\u914d\u7f6eClient ID<\/h4>\n<h5>\u83b7\u53d6Client ID\u548cAPP ID<\/h5>\n<p>\u5728 AppGallery Connect&#xff08;\u7b80\u79f0AGC&#xff09;\u7684\u5f00\u53d1\u4e0e\u670d\u52a1\u4e2d&#xff0c;\u9009\u62e9\u5bf9\u5e94\u7684\u9879\u76ee\u548c\u5bf9\u5e94\u7684\u5e94\u7528&#xff0c;\u5728\u201c\u5e38\u89c4 &gt; \u5e94\u7528 \u201d\u4e0b&#xff0c;\u627e\u5230\u5e94\u7528\u7684Client ID\u548cAPP ID\u3002<\/p>\n<h5>\u786e\u8ba4\u662f\u5426\u9700\u8981\u914d\u7f6eClient ID<\/h5>\n<p>\u5982\u679c\u4e0a\u4e00\u6b65\u83b7\u53d6\u5230\u7684Client ID\u548cAPP ID\u76f8\u540c&#xff0c;\u5219\u65e0\u9700\u914d\u7f6eClient ID&#xff0c;\u5426\u5219\u9700\u8981\u6309\u4e0b\u4e00\u6b65\u914d\u7f6eClient ID\u3002<\/p>\n<h5>\u914d\u7f6eClient ID<\/h5>\n<p>\u5728\u5de5\u7a0b\u4e2dentry\u6a21\u5757\u7684module.json5\u6587\u4ef6\u4e2d&#xff0c;\u65b0\u589emetadata&#xff0c;\u914d\u7f6ename\u4e3aclient_id&#xff0c;value\u4e3a\u4e0a\u4e00\u6b65\u83b7\u53d6\u7684Client ID\u7684\u503c&#xff0c;\u5982\u4e0b\u6240\u793a&#xff1a;<\/p>\n<p>\u8bf4\u660e<\/p>\n<p>1.\u82e5\u5de5\u7a0b\u4e2d\u5b58\u5728\u591a\u4e2a\u6a21\u5757&#xff0c;\u9700\u8981\u5728&#034;type&#034;\u4e3a&#034;entry&#034;\u6a21\u5757\u4e2d\u7684module.json5\u6587\u4ef6\u914d\u7f6e\u5e94\u7528\u7684Client ID\u3002<\/p>\n<p>2.\u8bf7\u786e\u8ba4\u83b7\u53d6\u7684Client ID\u662f\u5e94\u7528Client ID&#xff0c;\u9519\u914d\u6210\u9879\u76eeClient ID\u5c06\u5bfc\u81f4\u63a5\u53e3\u8c03\u7528\u62a5\u9519\u3002<\/p>\n<p><span class=\"token string-property property\">&#034;module&#034;<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token string-property property\">&#034;name&#034;<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">&#034;entry&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token string-property property\">&#034;type&#034;<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">&#034;entry&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token string-property property\">&#034;description&#034;<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">&#034;&lt;description&gt;&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token string-property property\">&#034;mainElement&#034;<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">&#034;&lt;mainElement&gt;&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token string-property property\">&#034;deviceTypes&#034;<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">[<\/span><br \/>\n  <span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ &#8230;<\/span><br \/>\n  <span class=\"token string-property property\">&#034;pages&#034;<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">&#034;$profile:main_pages&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ &#8230;<\/span><br \/>\n  <span class=\"token string-property property\">&#034;metadata&#034;<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">[<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u914d\u7f6e\u4fe1\u606f\u5982\u4e0b<\/span><br \/>\n    <span class=\"token comment\">\/\/ &#8230;<\/span><br \/>\n    <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token string-property property\">&#034;name&#034;<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">&#034;client_id&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n      <span class=\"token comment\">\/\/ \u5c06\u4e0a\u4e00\u6b65\u83b7\u53d6\u5230\u7684Client ID\u8d4b\u503c\u7ed9value&#xff0c;\u8bf7\u6ce8\u610f\u4e0d\u8981\u4f7f\u7528\u5176\u4ed6\u65b9\u5f0f\u8bbe\u7f6evalue\u503c<\/span><br \/>\n      <span class=\"token string-property property\">&#034;value&#034;<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">&#034;xxxxx&#034;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n  <span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<h4>\u7533\u8bf7\u8d26\u53f7\u6743\u9650<\/h4>\n<p>\u8bf7\u53c2\u8003\u201c\u5e94\u7528\u5f00\u53d1\u51c6\u5907\u201d\u7ae0\u8282&#xff0c;\u521b\u5efa\u5e94\u7528\u3001\u4f7f\u7528DevEco Studio\u521b\u5efa\u5e94\u7528\u5de5\u7a0b\u3002<\/p>\n<p>\u8bf4\u660e<\/p>\n<p>\u5982\u9700\u7533\u8bf7\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u3001\u83b7\u53d6\u60a8\u7684\u624b\u673a\u53f7\u3001\u83b7\u53d6\u6536\u8d27\u5730\u5740\u6743\u9650&#xff0c;\u5219\u9700\u6309\u7167\u4ee5\u4e0b\u6b65\u9aa4\u5b8c\u6210\u6743\u9650\u7533\u8bf7&#xff0c;\u5426\u5219\u53ef\u8df3\u8fc7\u672c\u7ae0\u8282\u3002<\/p>\n<h5>\u7533\u8bf7\u524d\u81ea\u68c0<\/h5>\n<p>\u7533\u8bf7\u6743\u9650\u524d\u8bf7\u53c2\u8003\u88681&#xff0c;\u4e86\u89e3\u8d26\u53f7\u6743\u9650\u652f\u6301\u7684\u80fd\u529b\u548c\u4f7f\u7528\u6761\u4ef6&#xff0c;\u5e76\u6839\u636e\u88682\u3001\u88683\u3001\u88684\u5b8c\u6210\u81ea\u68c0&#xff0c;\u786e\u8ba4\u60a8\u7684\u5e94\u7528\u7c7b\u578b\u3001\u8bbe\u5907\u7c7b\u578b\u3001\u5f00\u53d1\u8005\u7c7b\u578b\u7b49\u662f\u5426\u7b26\u5408\u7533\u8bf7\u6761\u4ef6&#xff0c;\u4e0d\u7b26\u5408\u6761\u4ef6\u7684\u7533\u8bf7\u5c06\u88ab\u9a73\u56de\u3002<\/p>\n<p>\u8bf4\u660e<\/p>\n<p>\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u3001\u83b7\u53d6\u60a8\u7684\u624b\u673a\u53f7\u3001\u83b7\u53d6\u6536\u8d27\u5730\u5740\u6743\u9650&#xff0c;\u4ec5\u652f\u6301\u4f01\u4e1a\u5f00\u53d1\u8005\u7533\u8bf7&#xff0c;\u4e0d\u652f\u6301\u4e2a\u4eba\u5f00\u53d1\u8005\u7533\u8bf7\u3002\u4e2a\u4eba\u5f00\u53d1\u8005\u53ef\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u6216\u9759\u9ed8\u767b\u5f55\u5b9e\u73b0\u767b\u5f55\u3002<\/p>\n<p>\u88681 \u8d26\u53f7\u6743\u9650\u8bf4\u660e<\/p>\n<table>\n<tr>\u6743\u9650\u540d\u79f0\u6743\u9650\u63cf\u8ff0\u652f\u6301\u7684\u5e94\u7528\u7c7b\u578b\u652f\u6301\u7684\u5f00\u53d1\u8005\u7c7b\u578b\u652f\u6301\u7684\u8bbe\u5907\u7c7b\u578b<\/tr>\n<tbody>\n<tr>\n<td>\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55<\/td>\n<td>\u652f\u6301\u5e94\u7528\u83b7\u53d6\u7528\u6237\u7684Union ID\u3001Open ID\u548c\u534e\u4e3a\u8d26\u53f7\u7ed1\u5b9a\u7684\u624b\u673a\u53f7\u3002<\/td>\n<td>\u975e\u6e38\u620f\u7c7b\u5e94\u7528\u3001\u975e\u94f6\u884c\u7c7b\u5e94\u7528<\/td>\n<td>\u4f01\u4e1a\u5f00\u53d1\u8005<\/td>\n<td>Phone\u3001Tablet\u3001PC\/2in1\u3001TV<\/td>\n<\/tr>\n<tr>\n<td>\u83b7\u53d6\u60a8\u7684\u624b\u673a\u53f7<\/td>\n<td>\u652f\u6301\u5e94\u7528\u83b7\u53d6\u534e\u4e3a\u8d26\u53f7\u7ed1\u5b9a\u7684\u624b\u673a\u53f7\u6216\u7528\u6237\u9009\u62e9\u7684\u5176\u4ed6\u624b\u673a\u53f7\u3002<\/td>\n<td>\u6e38\u620f\u7c7b\u5e94\u7528<\/td>\n<td>\u4f01\u4e1a\u5f00\u53d1\u8005<\/td>\n<td>Phone\u3001Tablet\u3001PC\/2in1\u3001Wearable\u3001TV<\/td>\n<\/tr>\n<tr>\n<td>\u83b7\u53d6\u6536\u8d27\u5730\u5740<\/td>\n<td>\u652f\u6301\u5e94\u7528\u83b7\u53d6\u7528\u6237\u7684\u5730\u5740&#xff0c;\u5730\u5740\u53ef\u4ee5\u7528\u505a\u6536\u8d27\u6216\u8005\u53d1\u8d27\u3002<\/td>\n<td>\u65e0\u9650\u5236<\/td>\n<td>\u4f01\u4e1a\u5f00\u53d1\u8005<\/td>\n<td>Phone\u3001Tablet\u3001PC\/2in1\u3001TV<\/td>\n<\/tr>\n<tr>\n<td>\u83b7\u53d6\u60a8\u7684\u5e74\u9f84\u6bb5<\/td>\n<td>\u652f\u6301\u5e94\u7528\u83b7\u53d6\u7528\u6237\u7684\u5b9e\u540d\u5e74\u9f84\u6bb5\u4fe1\u606f<\/td>\n<td>\u6e38\u620f\u7c7b\u5e94\u7528<\/td>\n<td>\u4f01\u4e1a\u5f00\u53d1\u8005<\/td>\n<td>Phone\u3001Tablet\u3001PC\/2in1\u3001Wearable\u3001TV<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u88682 \u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u6743\u9650\u7533\u8bf7\u81ea\u68c0\u8868<\/p>\n<table>\n<tr>\u5e8f\u53f7\u81ea\u68c0\u9879\u5185\u5bb9<\/tr>\n<tbody>\n<tr>\n<td>1<\/td>\n<td>\u5f00\u53d1\u8005\u5fc5\u987b\u4e3a\u4f01\u4e1a\u5f00\u53d1\u8005\u3002<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>\u7533\u8bf7\u6743\u9650\u7684\u5e94\u7528\u7c7b\u578b\u5fc5\u987b\u4e3aHarmonyOS NEXT\u5e94\u7528&#xff08;HarmonyOS\u5e94\u7528\u4e0d\u4e88\u5ba1\u6279&#xff09;\u3002<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>\u6e38\u620f\u7c7b\u3001\u94f6\u884c\u7c7b\u5e94\u7528\u6682\u4e0d\u5f00\u653e\u3002<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>\u5e94\u7528\u662f\u5426\u4e0a\u67b6\u5e94\u7528\u5e02\u573a&#xff0c;\u5982\u4e0d\u4e0a\u67b6\u9700\u8981\u8bf4\u660e\u539f\u56e0\u3002<\/td>\n<\/tr>\n<tr>\n<td>5<\/td>\n<td>\u82e5\u5e94\u7528\u8fd1\u671f\u5b58\u5728\u8fdd\u89c4\u8bb0\u5f55&#xff0c;\u5219\u4e0d\u4e88\u5ba1\u6279\u6216\u6709\u6743\u6536\u56de\u6743\u9650\u3002<\/td>\n<\/tr>\n<tr>\n<td>6<\/td>\n<td>\u82e5\u7528\u6237\u4e3e\u62a5\u6216\u53d1\u73b0\u5f00\u53d1\u8005\u4e0d\u5408\u7406\u7684\u4f7f\u7528&#xff0c;\u534e\u4e3a\u6709\u6743\u6536\u56de\u6743\u9650\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u88683 \u83b7\u53d6\u60a8\u7684\u624b\u673a\u53f7\u6743\u9650\u7533\u8bf7\u81ea\u68c0\u8868<\/p>\n<table>\n<tr>\u5e8f\u53f7\u81ea\u68c0\u9879\u5185\u5bb9<\/tr>\n<tbody>\n<tr>\n<td>1<\/td>\n<td>\u5f00\u53d1\u8005\u5fc5\u987b\u4e3a\u4f01\u4e1a\u5f00\u53d1\u8005\u3002<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>\u4ec5\u652f\u6301\u6e38\u620f\u7c7b\u5e94\u7528\u7533\u8bf7&#xff0c;\u5176\u4ed6\u7c7b\u578b\u5e94\u7528\u6682\u4e0d\u5f00\u653e\u3002<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>\u5e94\u7528\u662f\u5426\u4e0a\u67b6\u5e94\u7528\u5e02\u573a&#xff0c;\u5982\u4e0d\u4e0a\u67b6\u9700\u8981\u8bf4\u660e\u539f\u56e0\u3002<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>\u82e5\u5e94\u7528\u8fd1\u671f\u5b58\u5728\u8fdd\u89c4\u8bb0\u5f55&#xff0c;\u5219\u4e0d\u4e88\u5ba1\u6279\u6216\u6709\u6743\u6536\u56de\u6743\u9650\u3002<\/td>\n<\/tr>\n<tr>\n<td>5<\/td>\n<td>\u82e5\u7528\u6237\u4e3e\u62a5\u6216\u53d1\u73b0\u5f00\u53d1\u8005\u4e0d\u5408\u7406\u7684\u4f7f\u7528&#xff0c;\u534e\u4e3a\u6709\u6743\u6536\u56de\u6743\u9650\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u88684 \u83b7\u53d6\u6536\u8d27\u5730\u5740\u6743\u9650\u7533\u8bf7\u81ea\u68c0\u8868<\/p>\n<table>\n<tr>\u5e8f\u53f7\u81ea\u68c0\u9879\u5185\u5bb9<\/tr>\n<tbody>\n<tr>\n<td>1<\/td>\n<td>\u5f00\u53d1\u8005\u5fc5\u987b\u4e3a\u4f01\u4e1a\u5f00\u53d1\u8005\u3002<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>\u5e94\u7528\u662f\u5426\u4e0a\u67b6\u5e94\u7528\u5e02\u573a&#xff0c;\u5982\u4e0d\u4e0a\u67b6\u9700\u8981\u8bf4\u660e\u539f\u56e0\u3002<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>\u82e5\u5e94\u7528\u8fd1\u671f\u5b58\u5728\u8fdd\u89c4\u8bb0\u5f55&#xff0c;\u5219\u4e0d\u4e88\u5ba1\u6279\u6216\u6709\u6743\u6536\u56de\u6743\u9650\u3002<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>\u82e5\u7528\u6237\u4e3e\u62a5\u6216\u53d1\u73b0\u5f00\u53d1\u8005\u4e0d\u5408\u7406\u7684\u4f7f\u7528&#xff0c;\u534e\u4e3a\u6709\u6743\u6536\u56de\u6743\u9650\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u88685 \u83b7\u53d6\u60a8\u7684\u5e74\u9f84\u6bb5\u6743\u9650\u7533\u8bf7\u81ea\u68c0\u8868<\/p>\n<table>\n<tr>\u5e8f\u53f7\u81ea\u68c0\u9879\u5185\u5bb9<\/tr>\n<tbody>\n<tr>\n<td>1<\/td>\n<td>\u5f00\u53d1\u8005\u5fc5\u987b\u4e3a\u4f01\u4e1a\u5f00\u53d1\u8005\u3002<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>\u4ec5\u652f\u6301\u6e38\u620f\u7c7b\u5e94\u7528\u7533\u8bf7&#xff0c;\u5176\u4ed6\u7c7b\u578b\u5e94\u7528\u6682\u4e0d\u5f00\u653e\u3002<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>\u5e94\u7528\u662f\u5426\u4e0a\u67b6\u5e94\u7528\u5e02\u573a&#xff0c;\u5982\u4e0d\u4e0a\u67b6\u9700\u8981\u8bf4\u660e\u539f\u56e0\u3002<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>\u82e5\u5e94\u7528\u8fd1\u671f\u5b58\u5728\u8fdd\u89c4\u8bb0\u5f55&#xff0c;\u5219\u4e0d\u4e88\u5ba1\u6279\u6216\u6709\u6743\u6536\u56de\u6743\u9650\u3002<\/td>\n<\/tr>\n<tr>\n<td>5<\/td>\n<td>\u82e5\u7528\u6237\u4e3e\u62a5\u6216\u53d1\u73b0\u5f00\u53d1\u8005\u4e0d\u5408\u7406\u7684\u4f7f\u7528&#xff0c;\u534e\u4e3a\u6709\u6743\u6536\u56de\u6743\u9650\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h5>\u7533\u8bf7\u6b65\u9aa4<\/h5>\n<p>\u5728 AppGallery Connect&#xff08;\u7b80\u79f0AGC&#xff09;\u7684\u5f00\u53d1\u4e0e\u670d\u52a1\u4e2d&#xff0c;\u9009\u62e9\u76f8\u5e94\u7684\u9879\u76ee&#xff0c;\u7136\u540e\u9009\u62e9\u9700\u8981\u7533\u8bf7\u5bf9\u5e94\u6743\u9650\u7684HarmonyOS\u5e94\u7528\u3002<\/p>\n<p>\u5728\u201c\u5f00\u653e\u80fd\u529b\u7ba1\u7406\u201d\u4e2d&#xff0c;\u9009\u62e9\u60f3\u8981\u7533\u8bf7\u7684\u8d26\u53f7\u6743\u9650&#xff0c;\u5e76\u70b9\u51fb\u201c\u7533\u8bf7\u201d\u3002<\/p>\n<p>\u8bf4\u660e<\/p>\n<p>\u6743\u9650\u7533\u8bf7\u5165\u53e3\u76ee\u524d\u4ec5\u5bf9\u4f01\u4e1a\u5f00\u53d1\u8005\u5f00\u653e&#xff0c;\u4e2a\u4eba\u5f00\u53d1\u8005\u4e0d\u53ef\u89c1\u3002<\/p>\n<p>\u56fe\u793a\u4ec5\u4e3a\u793a\u4f8b&#xff0c;\u4e0d\u540c\u5e94\u7528\u7c7b\u578b\u5c55\u793a\u4e0d\u540c\u6743\u9650&#xff0c;\u8bf7\u4ee5\u5b9e\u9645\u9875\u9762\u663e\u793a\u4e3a\u51c6\u3002<\/p>\n<p>\u70b9\u51fb\u7533\u8bf7\u540e&#xff0c;\u8bf7\u6839\u636e\u5e94\u7528\u5b9e\u9645\u60c5\u51b5\u586b\u5199\u201c\u7533\u8bf7\u539f\u56e0\u201d\u3002<\/p>\n<p>\u8bf4\u660e<\/p>\n<p>\u7533\u8bf7\u539f\u56e0\u586b\u5199\u6a21\u677f&#xff1a;<\/p>\n<p>\u5e94\u7528\u4ecb\u7ecd&#xff1a;\u8bf4\u660e\u5e94\u7528\u7c7b\u578b&#xff0c;\u4f8b\u5982XXX\u5e94\u7528\u5c5e\u4e8eXXX\u7c7b\u578b\u7684\u5e94\u7528\u3002<\/p>\n<p>\u4f7f\u7528\u573a\u666f&#xff1a;\u8bf4\u660e\u6743\u9650\u4f7f\u7528\u573a\u666f&#xff0c;\u4f8b\u5982\u5728XXX\u573a\u666f\u4e0b&#xff0c;\u9700\u8981\u4f7f\u7528XX\u80fd\u529b\u3002\u4f7f\u7528\u573a\u666f\u53c2\u89c1\u88685 \u4f7f\u7528\u573a\u666f\u7c7b\u578b&#xff0c;\u82e5\u4e3a\u5176\u4ed6\u573a\u666f&#xff0c;\u8bf7\u6309\u5b9e\u9645\u7c7b\u578b\u586b\u5199\u3002<\/p>\n<p>\u7533\u8bf7\u7528\u9014&#xff1a;\u63cf\u8ff0\u8be5\u6743\u9650\u7684\u7528\u9014&#xff0c;\u4f8b\u5982\u7528\u6237\u4f7f\u7528XXX\u529f\u80fd\u540e&#xff0c;\u8fdb\u884cXXX\u64cd\u4f5c&#xff0c;\u63d0\u4f9bXXX\u670d\u52a1\u3002<\/p>\n<p>\u88685 \u4f7f\u7528\u573a\u666f\u7c7b\u578b<\/p>\n<table>\n<tr>\u4f7f\u7528\u573a\u666f\u7c7b\u578b\u4e1a\u52a1\u573a\u666f\u63cf\u8ff0<\/tr>\n<tbody>\n<tr>\n<td>\u7f51\u7edc\u7ea6\u8f66\u7c7b<\/td>\n<td>\u57fa\u672c\u529f\u80fd\u670d\u52a1\u4e3a\u201c\u7f51\u7edc\u9884\u7ea6\u51fa\u79df\u6c7d\u8f66\u670d\u52a1\u3001\u5de1\u6e38\u51fa\u79df\u6c7d\u8f66\u7535\u53ec\u670d\u52a1\u201d\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u5373\u65f6\u901a\u4fe1\u7c7b<\/td>\n<td>\u57fa\u672c\u529f\u80fd\u670d\u52a1\u4e3a\u201c\u63d0\u4f9b\u6587\u5b57\u3001\u56fe\u7247\u3001\u8bed\u97f3\u3001\u89c6\u9891\u7b49\u7f51\u7edc\u5373\u65f6\u901a\u4fe1\u670d\u52a1\u201d\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u7f51\u7edc\u793e\u533a\u7c7b<\/td>\n<td>\u57fa\u672c\u529f\u80fd\u670d\u52a1\u4e3a\u201c\u535a\u5ba2\u3001\u8bba\u575b\u3001\u793e\u533a\u7b49\u8bdd\u9898\u8ba8\u8bba\u3001\u4fe1\u606f\u5206\u4eab\u548c\u5173\u6ce8\u4e92\u52a8\u201d\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u7f51\u7edc\u652f\u4ed8\u7c7b<\/td>\n<td>\u57fa\u672c\u529f\u80fd\u670d\u52a1\u4e3a\u201c\u7f51\u7edc\u652f\u4ed8\u3001\u63d0\u73b0\u3001\u8f6c\u8d26\u7b49\u529f\u80fd\u201d \u3002<\/td>\n<\/tr>\n<tr>\n<td>\u7f51\u4e0a\u8d2d\u7269\u7c7b<\/td>\n<td>\u57fa\u672c\u529f\u80fd\u670d\u52a1\u4e3a\u201c\u8d2d\u4e70\u5546\u54c1\u201d\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u9910\u996e\u5916\u5356\u7c7b<\/td>\n<td>\u57fa\u672c\u529f\u80fd\u670d\u52a1\u4e3a\u201c\u9910\u996e\u8d2d\u4e70\u53ca\u5916\u9001\u201d\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u90ae\u4ef6\u5feb\u4ef6\u5bc4\u9012\u7c7b<\/td>\n<td>\u57fa\u672c\u529f\u80fd\u670d\u52a1\u4e3a\u201c\u4fe1\u4ef6\u3001\u5305\u88f9\u3001\u5370\u5237\u54c1\u7b49\u7269\u54c1\u5bc4\u9012\u670d\u52a1\u201d\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u4ea4\u901a\u7968\u52a1\u7c7b<\/td>\n<td>\u57fa\u672c\u529f\u80fd\u670d\u52a1\u4e3a\u201c\u4ea4\u901a\u76f8\u5173\u7684\u7968\u52a1\u670d\u52a1\u53ca\u884c\u7a0b\u7ba1\u7406&#xff08;\u5982\u7968\u52a1\u8d2d\u4e70\u3001\u6539\u7b7e\u3001\u9000\u7968\u3001\u884c\u7a0b\u7ba1\u7406\u7b49&#xff09;\u201d\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u5a5a\u604b\u76f8\u4eb2\u7c7b<\/td>\n<td>\u57fa\u672c\u529f\u80fd\u670d\u52a1\u4e3a\u201c\u5a5a\u604b\u76f8\u4eb2\u201d\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u6c42\u804c\u62db\u8058\u7c7b<\/td>\n<td>\u57fa\u672c\u529f\u80fd\u670d\u52a1\u4e3a\u201c\u6c42\u804c\u62db\u8058\u4fe1\u606f\u4ea4\u6362\u201d\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u7f51\u7edc\u501f\u8d37\u7c7b<\/td>\n<td>\u57fa\u672c\u529f\u80fd\u670d\u52a1\u4e3a\u201c\u901a\u8fc7\u4e92\u8054\u7f51\u5e73\u53f0\u5b9e\u73b0\u7684\u7528\u4e8e\u6d88\u8d39\u3001\u65e5\u5e38\u751f\u4ea7\u7ecf\u8425\u5468\u8f6c\u7b49\u7684\u4e2a\u4eba\u7533\u8d37\u670d\u52a1\u201d\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u623f\u5c4b\u79df\u552e\u7c7b<\/td>\n<td>\u57fa\u672c\u529f\u80fd\u670d\u52a1\u4e3a\u201c\u4e2a\u4eba\u623f\u6e90\u4fe1\u606f\u53d1\u5e03\u3001\u623f\u5c4b\u51fa\u79df\u6216\u4e70\u5356\u201d\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u4e8c\u624b\u8f66\u4ea4\u6613\u7c7b<\/td>\n<td>\u57fa\u672c\u529f\u80fd\u670d\u52a1\u4e3a\u201c\u4e8c\u624b\u8f66\u4e70\u5356\u4fe1\u606f\u4ea4\u6362\u201d\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u95ee\u8bca\u6302\u53f7\u7c7b<\/td>\n<td>\u57fa\u672c\u529f\u80fd\u670d\u52a1\u4e3a\u201c\u5728\u7ebf\u54a8\u8be2\u95ee\u8bca\u3001\u9884\u7ea6\u6302\u53f7\u201d\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u65c5\u6e38\u670d\u52a1\u7c7b<\/td>\n<td>\u57fa\u672c\u529f\u80fd\u670d\u52a1\u4e3a\u201c\u65c5\u6e38\u670d\u52a1\u4ea7\u54c1\u4fe1\u606f\u7684\u53d1\u5e03\u4e0e\u8ba2\u8d2d\u201d\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u9152\u5e97\u670d\u52a1\u7c7b<\/td>\n<td>\u57fa\u672c\u529f\u80fd\u670d\u52a1\u4e3a\u201c\u9152\u5e97\u9884\u8ba2\u201d\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u7f51\u7edc\u6e38\u620f\u7c7b<\/td>\n<td>\u57fa\u672c\u529f\u80fd\u670d\u52a1\u4e3a\u201c\u63d0\u4f9b\u7f51\u7edc\u6e38\u620f\u4ea7\u54c1\u548c\u670d\u52a1\u201d\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u5b66\u4e60\u6559\u80b2\u7c7b<\/td>\n<td>\u57fa\u672c\u529f\u80fd\u670d\u52a1\u4e3a\u201c\u5728\u7ebf\u8f85\u5bfc\u3001\u7f51\u7edc\u8bfe\u5802\u7b49\u201d\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u672c\u5730\u751f\u6d3b\u7c7b<\/td>\n<td>\u57fa\u672c\u529f\u80fd\u670d\u52a1\u4e3a\u201c\u5bb6\u653f\u7ef4\u4fee\u3001\u5bb6\u5c45\u88c5\u4fee\u3001\u4e8c\u624b\u95f2\u7f6e\u7269\u54c1\u4ea4\u6613\u7b49\u65e5\u5e38\u751f\u6d3b\u670d\u52a1\u201d\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u7528\u8f66\u670d\u52a1\u7c7b<\/td>\n<td>\u57fa\u672c\u529f\u80fd\u670d\u52a1\u4e3a\u201c\u5171\u4eab\u5355\u8f66\u3001\u5171\u4eab\u6c7d\u8f66\u3001\u79df\u8d41\u6c7d\u8f66\u7b49\u670d\u52a1\u201d\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u6295\u8d44\u7406\u8d22\u7c7b<\/td>\n<td>\u57fa\u672c\u529f\u80fd\u670d\u52a1\u4e3a\u201c\u80a1\u7968\u3001\u671f\u8d27\u3001\u57fa\u91d1\u3001\u503a\u5238\u7b49\u76f8\u5173\u6295\u8d44\u7406\u8d22\u670d\u52a1\u201d\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u624b\u673a\u94f6\u884c\u7c7b<\/td>\n<td>\u57fa\u672c\u529f\u80fd\u670d\u52a1\u4e3a\u201c\u901a\u8fc7\u624b\u673a\u7b49\u79fb\u52a8\u667a\u80fd\u7ec8\u7aef\u8bbe\u5907\u8fdb\u884c\u94f6\u884c\u8d26\u6237\u7ba1\u7406\u3001\u4fe1\u606f\u67e5\u8be2\u3001\u8f6c\u8d26\u6c47\u6b3e\u7b49\u670d\u52a1\u201d\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u90ae\u7bb1\u4e91\u76d8\u7c7b<\/td>\n<td>\u57fa\u672c\u529f\u80fd\u670d\u52a1\u4e3a\u201c\u90ae\u7bb1\u3001\u4e91\u76d8\u7b49\u201d\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u8fdc\u7a0b\u4f1a\u8bae\u7c7b<\/td>\n<td>\u57fa\u672c\u529f\u80fd\u670d\u52a1\u4e3a\u201c\u901a\u8fc7\u7f51\u7edc\u63d0\u4f9b\u97f3\u9891\u6216\u89c6\u9891\u4f1a\u8bae\u201d\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u6f14\u51fa\u7968\u52a1\u7c7b<\/td>\n<td>\u57fa\u672c\u529f\u80fd\u670d\u52a1\u4e3a\u201c\u6f14\u51fa\u8d2d\u7968\u201d\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u63d0\u4ea4\u7533\u8bf7\u6210\u529f\u540e&#xff0c;\u81ea\u52a8\u8df3\u8f6c\u5230\u4e92\u52a8\u4e2d\u5fc3&#xff0c;\u63d0\u793a\u7b49\u5f85\u5ba1\u6838\u3002<\/p>\n<p>\u8bf4\u660e<\/p>\n<p>3\u4e2a\u5de5\u4f5c\u65e5\u5185\u5ba1\u6838\u7ed3\u679c\u4f1a\u901a\u8fc7\u7ad9\u5185\u6d88\u606f\u7684\u5f62\u5f0f\u53d1\u9001\u5230\u4e92\u52a8\u4e2d\u5fc3&#xff0c;\u8bf7\u6ce8\u610f\u67e5\u6536\u3002<\/p>\n<p>\u6743\u9650\u7533\u8bf7\u901a\u8fc7\u540e\u6700\u8fdf\u572825\u5c0f\u65f6\u540e\u751f\u6548\u3002<\/p>\n<p>&#xff08;\u53ef\u9009&#xff09; \u60a8\u53ef\u901a\u8fc7\u4fee\u6539\u5e94\u7528\u5de5\u7a0b &gt; app.json5\u4e2d\u7684versionCode\u89e6\u53d1\u6743\u9650\u751f\u6548\u3002<\/p>\n<p>\u56fe1 \u4fee\u6539\u524d<\/p>\n<p>\u56fe2 \u4fee\u6539\u540e<\/p>\n<h3>\u767b\u5f55<\/h3>\n<h4>\u6982\u8ff0<\/h4>\n<p>Account Kit\u63d0\u4f9b\u4e86\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u3001\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u3001\u9759\u9ed8\u767b\u5f55\u7b49\u591a\u79cd\u767b\u5f55\u65b9\u5f0f&#xff0c;\u5176\u4e2d\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u4ec5\u652f\u6301\u4f01\u4e1a\u5f00\u53d1\u8005\u4f7f\u7528&#xff0c;\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u548c\u9759\u9ed8\u767b\u5f55\u65e2\u652f\u6301\u4f01\u4e1a\u5f00\u53d1\u8005\u4e5f\u652f\u6301\u4e2a\u4eba\u5f00\u53d1\u8005\u4f7f\u7528&#xff0c;\u5e94\u7528\u53ef\u6839\u636e\u5b9e\u9645\u573a\u666f\u9009\u62e9\u4f7f\u7528\u5176\u4e2d\u4e00\u79cd\u6216\u591a\u79cd\u65b9\u5f0f\u8fdb\u884c\u8d26\u53f7\u767b\u5f55\u3002<\/p>\n<h5>\u57fa\u7840\u6982\u5ff5<\/h5>\n<p>\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u8eab\u4efd\u6807\u8bc6\u5305\u542bUnionID\u548cOpenID&#xff0c;\u5177\u4f53\u683c\u5f0f\u8981\u6c42\u8bf7\u53c2\u8003OpenID\u548cUnionID\u7684\u683c\u5f0f\u8bf4\u660e&#xff0c;\u6ce8\u610fOpenID\u548cUnionID\u4e25\u683c\u533a\u5206\u5927\u5c0f\u5199\u3002\u4e24\u8005\u7684\u5b9a\u4e49\u4e0e\u4f7f\u7528\u573a\u666f&#xff1a;<\/p>\n<table>\n<tr>\u9879\u76ee\/ID\u7c7b\u578bUnionIDOpenID<\/tr>\n<tbody>\n<tr>\n<td>\u5b9a\u4e49<\/td>\n<td>UnionID\u662f\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u540c\u4e00\u5f00\u53d1\u8005\u8d26\u53f7\u4e0b\u7684\u552f\u4e00\u6807\u8bc6\u3002\u5f00\u53d1\u8005\u6709\u591a\u4e2aHarmonyOS\u5e94\u7528\u65f6&#xff0c;\u540c\u4e00\u4e2a\u5f00\u53d1\u8005\u8d26\u53f7\u4e0b\u7684HarmonyOS\u5e94\u7528\u83b7\u53d6\u5230\u7528\u6237\u7684UnionID\u76f8\u540c\u3002<\/td>\n<td>OpenID\u662f\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u5728HarmonyOS\u5e94\u7528\u7684\u552f\u4e00\u6807\u8bc6\u3002\u4e0d\u540cHarmonyOS\u5e94\u7528&#xff08;\u4e0d\u7ba1\u662f\u5426\u5728\u540c\u4e00\u4e2a\u5f00\u53d1\u8005\u8d26\u53f7\u4e0b&#xff09;\u83b7\u53d6\u5230\u7528\u6237\u7684OpenID\u4e0d\u540c\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u4f7f\u7528\u573a\u666f<\/td>\n<td>\u5728\u540c\u4e00\u4e2a\u5f00\u53d1\u8005\u8d26\u53f7\u4e0b\u6807\u8bc6\u7528\u6237\u7684\u552f\u4e00\u6027\u3002\u5efa\u8bae\u4f7f\u7528UnionID\u3002<\/td>\n<td>\u5728\u540c\u4e00\u4e2a\u5e94\u7528\u4e0b\u6807\u8bc6\u7528\u6237\u7684\u552f\u4e00\u6027\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u8bf4\u660e<\/p>\n<p>\u5728\u5f00\u53d1HarmonyOS\u5e94\u7528\u65f6&#xff0c;\u60a8\u9700\u8981\u8003\u8651\u540c\u4e00\u7528\u6237\u5728\u975eHarmonyOS\u5e94\u7528\u548cHarmonyOS\u5e94\u7528\u7684\u7528\u6237\u6570\u636e\u662f\u5426\u4e92\u901a\u3002\u5982\u679c\u60a8\u4e4b\u524d\u4f7f\u7528OpenID\u6765\u5173\u8054\u7528\u6237\u6570\u636e&#xff0c;\u6211\u4eec\u5efa\u8bae\u5c06\u7528\u6237\u6570\u636e\u5173\u7cfb\u5207\u6362\u6210UnionID&#xff0c;\u4ee5\u786e\u4fdd\u7528\u6237\u4f7f\u7528HarmonyOS\u5e94\u7528\u540e\u53ef\u4ee5\u7ee7\u627f\u8001\u7248\u672c\u7684\u7528\u6237\u6570\u636e\u3002\u5177\u4f53\u5207\u6362\u6307\u5bfc\u53ef\u4ee5\u53c2\u8003&#xff1a;\u901a\u8fc7OpenID\u83b7\u53d6UnionID\u3002<\/p>\n<h5>\u573a\u666f\u4ecb\u7ecd<\/h5>\n<p>\u83b7\u53d6\u624b\u673a\u53f7\u548cUnionID\u767b\u5f55&#xff0c;\u5373\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55<\/p>\n<p>\u82e5\u5e94\u7528\u9700\u8981\u540c\u65f6\u83b7\u53d6\u624b\u673a\u53f7\u548cUnionID&#xff0c;\u63a8\u8350\u4f7f\u7528\u6b64\u573a\u666f&#xff0c;\u7528\u6237\u4ec5\u9700\u4e00\u6b21\u70b9\u51fb\u64cd\u4f5c&#xff0c;\u5e94\u7528\u5373\u53ef\u83b7\u53d6\u7528\u6237\u624b\u673a\u53f7\u548cUnionID\u3002\u5e94\u7528\u83b7\u53d6\u5230\u7528\u6237\u624b\u673a\u53f7\u548cUnionID\u540e&#xff0c;\u53ef\u540c\u65f6\u901a\u8fc7\u624b\u673a\u53f7\u548cUnionID\u4e0e\u5e94\u7528\u539f\u6709\u7528\u6237\u4f53\u7cfb\u8fdb\u884c\u5173\u8054\u3002\u672c\u573a\u666f\u4ec5\u652f\u6301\u4f01\u4e1a\u5f00\u53d1\u8005\u4f7f\u7528&#xff0c;\u4e2a\u4eba\u5f00\u53d1\u8005\u8bf7\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u6216\u9759\u9ed8\u767b\u5f55\u65b9\u5f0f\u3002<\/p>\n<p>\u534e\u4e3a\u8d26\u53f7\u767b\u5f55<\/p>\n<p>\u82e5\u5e94\u7528\u53ea\u9700\u8981\u83b7\u53d6UnionID\u53ef\u4ee5\u4f7f\u7528\u6b64\u573a\u666f\u3002\u5e94\u7528\u83b7\u53d6\u5230\u7528\u6237UnionID\u540e&#xff0c;\u53ef\u901a\u8fc7UnionID\u4e0e\u5e94\u7528\u539f\u6709\u7528\u6237\u4f53\u7cfb\u8fdb\u884c\u5173\u8054\u3002<\/p>\n<p>\u9759\u9ed8\u767b\u5f55<\/p>\n<p>\u5728\u5e94\u7528\u5378\u8f7d\u91cd\u88c5\u3001\u7528\u6237\u6362\u673a\u7b49\u573a\u666f&#xff0c;\u5e94\u7528\u53ef\u901a\u8fc7Account Kit\u63d0\u4f9b\u7684\u9759\u9ed8\u767b\u5f55\u65b9\u5f0f\u5373\u4e0d\u9700\u8981\u7528\u6237\u70b9\u51fb\u767b\u5f55\/\u6ce8\u518c\u6309\u94ae&#xff0c;\u5373\u53ef\u83b7\u53d6\u7528\u6237\u7684\u8eab\u4efd\u6807\u8bc6UnionID&#xff0c;\u5b8c\u6210\u7528\u6237\u7684\u9759\u9ed8\u767b\u5f55\u3002<\/p>\n<p>\u8ba2\u9605\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\/\u767b\u51fa\u4e8b\u4ef6<\/p>\n<p>\u5f53\u5e94\u7528\u9700\u8981\u8ddf\u968f\u534e\u4e3a\u8d26\u53f7\u7684\u767b\u5f55\u72b6\u6001\u8fdb\u884c\u767b\u5f55\u767b\u51fa\u65f6&#xff0c;\u53ef\u4ee5\u901a\u8fc7\u8ba2\u9605\u534e\u4e3a\u8d26\u53f7\u7684\u767b\u5f55\u767b\u51fa\u4e8b\u4ef6\u8fdb\u884c\u5224\u65ad&#xff0c;\u53c2\u8003\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\/\u767b\u51fa\u4e8b\u4ef6\u3002<\/p>\n<h4>\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55&#xff08;\u83b7\u53d6\u624b\u673a\u53f7\u548cUnionID\/OpenID&#xff09;<\/h4>\n<h5>\u6982\u8ff0<\/h5>\n<p>\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u662f\u57fa\u4e8eOAuth 2.0\u534f\u8bae\u6807\u51c6\u548cOpenID Connect\u534f\u8bae\u6807\u51c6\u6784\u5efa\u7684OAuth 2.0\u6388\u6743\u767b\u5f55\u7cfb\u7edf&#xff0c;\u5e94\u7528\u53ef\u4ee5\u901a\u8fc7\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u80fd\u529b\u5feb\u6377\u5730\u83b7\u53d6\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u7684\u8eab\u4efd\u6807\u8bc6\u548c\u624b\u673a\u53f7&#xff0c;\u5feb\u901f\u5efa\u7acb\u5e94\u7528\u5185\u7684\u7528\u6237\u4f53\u7cfb\u3002<\/p>\n<p>\u4f18\u52bf&#xff1a;<\/p>\n<p>\u5229\u7528\u7cfb\u7edf\u8d26\u53f7\u7684\u5b89\u5168\u6027\u548c\u4fbf\u5229\u6027&#xff0c;\u7528\u6237\u65e0\u9700\u8f93\u5165\u8d26\u53f7\u540d\u548c\u5bc6\u7801&#xff0c;\u65e0\u9700\u590d\u6742\u7684\u5b89\u5168\u9a8c\u8bc1&#xff0c;\u7b80\u5316\u767b\u5f55\u6b65\u9aa4&#xff0c;\u63d0\u9ad8\u7528\u6237\u8f6c\u5316\u7387\u3002<\/p>\n<p>\u63d0\u4f9b\u7cfb\u7edf\u9a8c\u8bc1\u8fc7\u7684\u624b\u673a\u53f7&#xff0c;\u5173\u8054\u5e94\u7528\u5df2\u6709\u7528\u6237\u3002<\/p>\n<p>\u5b9e\u73b0Phone\u3001Tablet\u3001PC\/2in1\u3001TV\u8bbe\u5907\u4e00\u81f4\u7684\u767b\u5f55\u4f53\u9a8c\u3002<\/p>\n<h5>\u573a\u666f\u4ecb\u7ecd<\/h5>\n<p>\u82e5\u5e94\u7528\u9700\u540c\u65f6\u83b7\u53d6\u624b\u673a\u53f7\u548cUnionID\u5b8c\u6210\u7528\u6237\u767b\u5f55&#xff0c;Account Kit\u63d0\u4f9b\u4e86\u540c\u65f6\u83b7\u53d6\u624b\u673a\u53f7\u548cUnionID\u7684\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u6309\u94ae\u3002\u5e94\u7528\u53ef\u4ee5\u5c06\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u6309\u94ae\u5d4c\u5165\u81ea\u6709\u7684\u767b\u5f55\u9875&#xff0c;\u4f7f\u7528\u767b\u5f55\u6309\u94ae\u83b7\u53d6\u624b\u673a\u53f7\u548cUnionID&#xff0c;\u5b9e\u73b0\u7528\u6237\u767b\u5f55\u3002\u8bbe\u5907\u767b\u5f55\u534e\u4e3a\u8d26\u53f7&#xff08;\u8be5\u8d26\u53f7\u5df2\u7ed1\u5b9a\u624b\u673a\u53f7&#xff09;\u540e&#xff0c;\u4e00\u952e\u767b\u5f55\u83b7\u53d6\u624b\u673a\u53f7\u53ef\u4e0d\u4f9d\u8d56\u8bbe\u5907\u63d2SIM\u5361\u3002<\/p>\n<p>\u8bf4\u660e<\/p>\n<p>\u513f\u7ae5\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u573a\u666f&#xff1a;<\/p>\n<p>\u7528\u6237\u4f7f\u7528\u513f\u7ae5\u8d26\u53f7\u8fdb\u884c\u767b\u5f55&#xff0c;\u70b9\u51fb\u4e00\u952e\u767b\u5f55\u4f1a\u89e6\u53d1Account Kit\u9ed8\u8ba4\u63d0\u4f9b\u7684\u5bb6\u957f\u9a8c\u5bc6\u6d41\u7a0b&#xff08;Account Kit\u63d0\u4f9b\u7684\u9a8c\u8bc1\u9875&#xff0c;\u6682\u4e0d\u53ef\u81ea\u5b9a\u4e49&#xff09;&#xff0c;\u5bb6\u957f\u9a8c\u5bc6\u5b8c\u6210\u540e\u53ef\u83b7\u53d6\u7528\u6237\u7684\u8eab\u4efd\u6807\u8bc6\u548c\u624b\u673a\u53f7\u3002\u5e76\u4e14TV\u8bbe\u5907\u6682\u4e0d\u652f\u6301\u513f\u7ae5\u8d26\u53f7\u3002<\/p>\n<p>\u624b\u673a\u53f7\u9a8c\u8bc1\u673a\u5236\u8bf4\u660e&#xff1a;<\/p>\n<p>Account Kit\u8c03\u7528\u7cfb\u7edf\u80fd\u529b\u83b7\u53d6\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u8bbe\u5907\u4e0a\u7684SIM\u5361\u624b\u673a\u53f7\u7801&#xff0c;\u4e0e\u534e\u4e3a\u8d26\u53f7\u7ed1\u5b9a\u7684\u624b\u673a\u53f7\u8fdb\u884c\u6821\u9a8c&#xff08;\u6709\u7f51\u7edc\u5373\u53ef&#xff0c;\u65e0\u9700\u4f7f\u7528SIM\u5361\u79fb\u52a8\u6570\u636e&#xff09;\u3002\u7528\u6237\u70b9\u51fb\u4e00\u952e\u767b\u5f55\u6309\u94ae\u540e&#xff0c;\u7ed3\u5408\u534e\u4e3a\u8d26\u53f7\u4f7f\u7528\u8fc7\u7a0b\u4e2d\u8d26\u53f7\u6240\u7ed1\u5b9a\u7684\u624b\u673a\u53f7\u77ed\u4fe1\u9a8c\u8bc1\u8bb0\u5f55&#xff0c;90\u5929\u5185\u6709\u9a8c\u8bc1\u901a\u8fc7\u7684\u8bb0\u5f55&#xff0c;\u5219\u8fd4\u56de\u8be5\u534e\u4e3a\u8d26\u53f7\u7ed1\u5b9a\u7684\u624b\u673a\u53f7&#xff1b;\u82e590\u5929\u5185\u6ca1\u6709\u9a8c\u8bc1\u901a\u8fc7\u7684\u8bb0\u5f55&#xff0c;\u5219\u89e6\u53d1Account Kit\u9ed8\u8ba4\u63d0\u4f9b\u7684\u77ed\u4fe1\u9a8c\u8bc1\u6d41\u7a0b&#xff08;Account Kit\u63d0\u4f9b\u7684\u9a8c\u8bc1\u9875&#xff0c;\u6682\u4e0d\u53ef\u81ea\u5b9a\u4e49&#xff09;&#xff0c;\u786e\u4fdd\u8fd4\u56de\u7684\u624b\u673a\u53f7\u7ecf\u8fc7\u9a8c\u8bc1\u3002<\/p>\n<h5>\u7ea6\u675f\u4e0e\u9650\u5236<\/h5>\n<p>\u5e94\u7528\u6ee1\u8db3\u300a\u5e38\u89c1\u7c7b\u578b\u79fb\u52a8\u4e92\u8054\u7f51\u5e94\u7528\u7a0b\u5e8f\u5fc5\u8981\u4e2a\u4eba\u4fe1\u606f\u8303\u56f4\u89c4\u5b9a\u300b\u4e2d\u4f7f\u7528\u624b\u673a\u53f7\u7684\u5fc5\u8981\u4e1a\u52a1\u573a\u666f\u3002<\/p>\n<p>\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u529f\u80fd\u7528\u6237\u5fc5\u987b\u540c\u610f\u300a\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u8ba4\u8bc1\u534f\u8bae\u300b&#xff0c;\u5f53\u7528\u6237\u70b9\u51fb\u300a\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u8ba4\u8bc1\u534f\u8bae\u300b&#xff0c;\u7cfb\u7edf\u6d45\u8272\u6a21\u5f0f\u4e0b\u5e94\u7528\u9700\u8df3\u8f6c\u5230\u5982\u4e0b\u94fe\u63a5https:\/\/privacy.consumer.huawei.com\/legal\/id\/authentication-terms.htm?code&#061;CN&amp;language&#061;zh-CN&#xff0c;\u7cfb\u7edf\u6df1\u8272\u6a21\u5f0f\u4e0b\u8df3\u8f6c\u5230https:\/\/privacy.consumer.huawei.com\/legal\/id\/authentication-terms.htm?code&#061;CN&amp;language&#061;zh-CN&amp;bgmode&#061;black\u3002<\/p>\n<p>\u5e94\u7528\u5728\u7528\u6237\u540c\u610f\u540e\u83b7\u53d6\u5230\u624b\u673a\u53f7&#xff0c;\u9700\u8981\u6839\u636e\u81ea\u8eab\u4e1a\u52a1\u573a\u666f\u5224\u65ad\u4f7f\u7528\u7684\u65b9\u5f0f&#xff0c;\u5fc5\u8981\u65f6\u589e\u52a0\u5176\u4ed6\u5b89\u5168\u9a8c\u8bc1\u624b\u6bb5&#xff0c;\u6bd4\u5982\u5bf9\u4e8c\u6b21\u653e\u53f7\u7684\u5224\u65ad\u3002<\/p>\n<p>\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u670d\u52a1\u5f53\u524d\u4ec5\u9650\u4e2d\u56fd\u5883\u5185&#xff08;\u9999\u6e2f\u7279\u522b\u884c\u653f\u533a\u3001\u6fb3\u95e8\u7279\u522b\u884c\u653f\u533a\u3001\u4e2d\u56fd\u53f0\u6e7e\u9664\u5916&#xff09;\u7528\u6237\u53ef\u7528\u3002<\/p>\n<p>\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u652f\u6301Phone\u3001Tablet\u3001PC\/2in1\u8bbe\u5907\u3002\u5e76\u4e14\u4ece5.1.1(19)\u7248\u672c\u5f00\u59cb&#xff0c;\u65b0\u589e\u652f\u6301TV\u8bbe\u5907\u3002<\/p>\n<p>\u4ec5\u652f\u6301\u4f01\u4e1a\u5f00\u53d1\u8005\u4f7f\u7528\u4e00\u952e\u767b\u5f55&#xff0c;\u4e2a\u4eba\u5f00\u53d1\u8005\u8bf7\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u6216\u9759\u9ed8\u767b\u5f55\u5b9e\u73b0\u767b\u5f55\u3002<\/p>\n<h5>\u7528\u6237\u4f53\u9a8c\u8bbe\u8ba1<\/h5>\n<p>\u767b\u5f55\u9875\u9762UX\u8bbe\u8ba1\u89c4\u8303<\/p>\n<p>\u4e00\u952e\u767b\u5f55\u6309\u94ae\u7684\u7528\u6237\u4f53\u9a8c\u548cUX\u8bbe\u8ba1\u9700\u7b26\u5408\u3010\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u3011\u6309\u94ae\u89c4\u8303&#xff0c;\u7528\u6237\u4f53\u9a8c\u8bbe\u8ba1\u56fe2\u4e2d\u7684\u534e\u4e3a\u6807\u5fd7\u6309\u94ae\u53ef\u53c2\u8003\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u89c6\u89c9\u89c4\u8303\u4e2d\u7684\u6837\u5f0f\u4e09\u3002\u4e0d\u7b26\u5408\u89c4\u8303\u7684UX\u8bbe\u8ba1\u53ef\u80fd\u4f1a\u5bf9\u5e94\u7528\u4e0a\u67b6\u548c\u7528\u6237\u4f53\u9a8c\u5e26\u6765\u5f71\u54cd\u3002\u4e00\u952e\u767b\u5f55\u6309\u94ae\u7684\u6837\u5f0f\u8bbe\u8ba1\u5177\u4f53\u53ef\u4ee5\u53c2\u8003\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u6309\u94ae\u7c7b\u578b\u3002<\/p>\n<p>\u7528\u6237\u573a\u666f\u8bbe\u8ba1<\/p>\n<p>\u7528\u6237\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u80fd\u529b&#xff0c;\u6ce8\u518c\/\u767b\u5f55\u5e94\u7528\u65f6&#xff0c;\u53ef\u80fd\u5b58\u5728\u591a\u79cd\u573a\u666f&#xff0c;\u5e94\u7528\u53ef\u53c2\u7167\u4ee5\u4e0b\u6d41\u7a0b&#xff0c;\u6839\u636e\u81ea\u8eab\u4e1a\u52a1\u573a\u666f\u8fdb\u884c\u8bbe\u8ba1\u3002<\/p>\n<p>\u8bf4\u660e<\/p>\n<p>\u5c06UnionID\/OpenID\u548c\u624b\u673a\u53f7\u540c\u65f6\u4e0e\u5e94\u7528\u8d26\u53f7\u5efa\u7acb\u5173\u8054&#xff0c;\u53ef\u4ee5\u4e3a\u7528\u6237\u5e26\u6765\u66f4\u591a\u4fbf\u5229\u7684\u529f\u80fd\u3002\u5982&#xff1a;\u5b9e\u73b0\u9759\u9ed8\u767b\u5f55\u3001\u83b7\u53d6\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u4fe1\u606f\u3001\u83b7\u53d6\u534e\u4e3a\u8d26\u53f7\u98ce\u9669\u7b49\u7ea7\u7b49\u3002\u5b9e\u73b0\u514d\u7528\u6237\u64cd\u4f5c\u767b\u5f55&#xff0c;\u83b7\u5f97\u5b89\u5168\u5feb\u6377\u7684\u5e94\u7528\u767b\u5f55\u4f53\u9a8c\u3002<\/p>\n<h5>\u4e1a\u52a1\u6d41\u7a0b<\/h5>\n<p>\u7528\u6237\u9996\u6b21\u767b\u5f55\u5e94\u7528<\/p>\n<p>\u82e5\u5e94\u7528\u672a\u63a5\u5165\u8fc7\u534e\u4e3a\u8d26\u53f7\u767b\u5f55&#xff0c;\u4e0d\u5b58\u5728\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u8fc7\u7684\u5e94\u7528\u8d26\u53f7&#xff0c;\u8bf7\u53c2\u7167\u4ee5\u4e0b\u6d41\u7a0b\u63a5\u5165\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u3002<\/p>\n<p>\u56fe1 \u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55&#xff08;\u7528\u6237\u9996\u6b21\u767b\u5f55\u5e94\u7528&#xff09;\u6d41\u7a0b\u56fe<\/p>\n<p>\u6d41\u7a0b\u8bf4\u660e&#xff1a;<\/p>\n<p>\u9884\u53d6\u53f7\u9636\u6bb5&#xff08;\u5e8f\u53f71-4&#xff09;&#xff1a;<\/p>\n<p>\u7528\u6237\u6253\u5f00\u5e94\u7528\u540e&#xff0c;\u5e94\u7528scope\u4f20quickLoginAnonymousPhone\u8c03\u7528AuthorizationWithHuaweiIDRequest\u6388\u6743\u8bf7\u6c42\u83b7\u53d6\u533f\u540d\u624b\u673a\u53f7\u3002\u5982\u679c\u83b7\u53d6\u5230\u533f\u540d\u624b\u673a\u53f7\u4e3a\u7a7a&#xff0c;\u5e94\u7528\u9700\u8981\u5c55\u793a\u5176\u4ed6\u767b\u5f55\u65b9\u5f0f\u3002<\/p>\n<p>\u8bf4\u660e<\/p>\n<p>\u83b7\u53d6\u533f\u540d\u624b\u673a\u53f7\u65f6\u5efa\u8bae\u8bbe\u7f6e\u8d85\u65f6\u5904\u7406&#xff0c;\u63a8\u8350\u8bbe\u7f6e5\u79d2\u4ee5\u4fdd\u8bc1\u7528\u6237\u4f53\u9a8c\u3002<\/p>\n<p>\u82e5\u534e\u4e3a\u8d26\u53f7\u672a\u767b\u5f55&#xff0c;\u8c03\u7528AuthorizationWithHuaweiIDRequest\u6388\u6743\u8bf7\u6c42\u4f1a\u8fd4\u56de1001502001 \u7528\u6237\u672a\u767b\u5f55\u534e\u4e3a\u8d26\u53f7\u9519\u8bef\u7801&#xff0c;\u6b64\u65f6\u5e94\u7528\u9700\u8981\u5c55\u793a\u5176\u4ed6\u767b\u5f55\u65b9\u5f0f\u8fdb\u884c\u5e94\u7528\u767b\u5f55\u3002<\/p>\n<p>\u5c55\u793a\u4e00\u952e\u767b\u5f55\u9875\u9762\u9636\u6bb5&#xff08;\u5e8f\u53f75&#xff09;&#xff1a;<\/p>\n<p>\u83b7\u53d6\u5230\u7684\u533f\u540d\u624b\u673a\u53f7\u9700\u8981\u5c55\u793a\u5728\u9875\u9762\u4e0a\u5e76\u8bbe\u7f6e\u597d\u9690\u79c1\u534f\u8bae&#xff0c;\u8bbe\u7f6e\u767b\u5f55\u6309\u94ae\u7c7b\u578b\u4e3aLoginType.QUICK_LOGIN&#xff0c;\u5c55\u793a\u5305\u542bLoginWithHuaweiIDButton\u7ec4\u4ef6\u7684\u4e00\u952e\u767b\u5f55\u9875\u9762\u3002\u5e94\u7528\u53ef\u7ed3\u5408\u5b9e\u9645\u767b\u5f55\u98ce\u63a7\u573a\u666f&#xff0c;\u901a\u8fc7\u7ec4\u4ef6\u53c2\u6570\u4f20\u5165\u98ce\u9669\u7b49\u7ea7\u6807\u8bc6\u4ee5\u83b7\u53d6\u534e\u4e3a\u8d26\u53f7\u98ce\u9669\u7b49\u7ea7&#xff0c;\u4ece\u800c\u5bf9\u6076\u610f\u8d26\u53f7\u8fdb\u884c\u98ce\u63a7&#xff0c;\u63d0\u5347\u5e94\u7528\u7684\u5b89\u5168\u7b49\u7ea7\u3002<\/p>\n<p>\u70b9\u51fb\u4e00\u952e\u767b\u5f55\u5173\u8054\u7528\u6237\u8d26\u53f7\u9636\u6bb5&#xff08;\u5e8f\u53f76-16&#xff09;&#xff1a;<\/p>\n<p>\u7528\u6237\u540c\u610f\u534f\u8bae\u540e&#xff0c;\u70b9\u51fb\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u6309\u94ae&#xff0c;\u5e94\u7528\u53ef\u4ee5\u901a\u8fc7HuaweiIDCredential\u83b7\u53d6\u5230Authorization Code\u7b49\u6570\u636e\u3002<\/p>\n<p>\u5c06\u83b7\u53d6\u7684Authorization Code\u6570\u636e\u4f20\u7ed9\u5e94\u7528\u670d\u52a1\u7aef&#xff0c;\u5e94\u7528\u670d\u52a1\u7aef\u901a\u8fc7Authorization Code\u8c03\u7528\/oauth2\/v6\/quickLogin\/getPhoneNumber\u63a5\u53e3\u83b7\u53d6\u7528\u6237\u5b8c\u6574\u624b\u673a\u53f7\u548cUnionID\u3001OpenID\u3002<\/p>\n<p>\u5e94\u7528\u901a\u8fc7\u5173\u8054\u7528\u6237\u624b\u673a\u53f7\u548cUnionID\u3001OpenID\u5b8c\u6210\u7528\u6237\u767b\u5f55\u3002<\/p>\n<p>\u7528\u6237\u975e\u9996\u6b21\u767b\u5f55\u5e94\u7528&#xff08;\u53ef\u9009&#xff09;<\/p>\n<p>\u5e94\u7528\u63a5\u5165\u8fc7\u534e\u4e3a\u8d26\u53f7\u767b\u5f55&#xff0c;\u5b58\u5728\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u8fc7\u7684\u7528\u6237\u8d26\u53f7&#xff0c;\u5373\u6839\u636eUnionID\/OpenID\u5224\u65ad\u7528\u6237\u5df2\u5173\u8054\u8fc7\u5e94\u7528\u7cfb\u7edf\u6570\u636e\u5e93&#xff0c;\u5219\u9700\u8981\u53c2\u7167\u4ee5\u4e0b\u6d41\u7a0b\u5f00\u53d1\u3002<\/p>\n<p>\u56fe2 \u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55&#xff08;\u7528\u6237\u975e\u9996\u6b21\u767b\u5f55\u5e94\u7528&#xff09;\u6d41\u7a0b\u56fe<\/p>\n<p>\u6d41\u7a0b\u8bf4\u660e&#xff1a;<\/p>\n<p>\u5e94\u7528\u8c03\u7528AuthorizationWithHuaweiIDRequest\u6388\u6743\u8bf7\u6c42\u83b7\u53d6AuthorizationWithHuaweiIDResponse\u54cd\u5e94\u7ed3\u679c\u4e2d\u7684Authorization Code\u3002<\/p>\n<p>\u5e94\u7528\u670d\u52a1\u7aef\u901a\u8fc7Authorization Code\u8c03\u7528\/oauth2\/v6\/quickLogin\/getPhoneNumber\u63a5\u53e3\u83b7\u53d6\u7528\u6237\u76f8\u5173\u4fe1\u606f\u3002\u901a\u8fc7Authorization Code\u51ed\u8bc1\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u53ef\u4ee5\u6709\u6548\u907f\u514d\u9ed1\u5ba2\u901a\u8fc7\u6570\u636e\u904d\u5386\u3001\u8eab\u4efd\u4f2a\u9020\u3001\u91cd\u653e\u653b\u51fb\u7b49\u624b\u6bb5\u5bfc\u81f4\u7684\u5b89\u5168\u98ce\u9669\u3002<\/p>\n<p>\u5e94\u7528\u5bf9\u7528\u6237\u8eab\u4efd\u6807\u8bc6UnionID\/OpenID\u3001\u4e1a\u52a1\u767b\u5f55\u51ed\u8bc1SessionId\u4fe1\u606f\u8fdb\u884c\u8ba4\u8bc1\u540e&#xff0c;\u901a\u8fc7UnionID\/OpenID\u5224\u65ad\u7528\u6237\u662f\u5426\u5df2\u5173\u8054\u5e94\u7528\u7cfb\u7edf\u6570\u636e\u5e93&#xff0c;\u5982\u5df2\u5173\u8054&#xff0c;\u7ed3\u5408\u98ce\u63a7\u3001\u5b89\u5168\u56e0\u7d20\u53ca\u81ea\u8eab\u4e1a\u52a1\u573a\u666f\u5224\u65ad&#xff0c;\u53ef\u5c55\u793a\u5df2\u5173\u8054\u7684\u8d26\u53f7&#xff0c;\u7531\u7528\u6237\u9009\u62e9\u662f\u5426\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u5e94\u7528&#xff0c;\u6216\u514d\u7528\u6237\u64cd\u4f5c&#xff0c;\u9759\u9ed8\u767b\u5f55\u5e94\u7528\u3002<\/p>\n<h5>\u63a5\u53e3\u8bf4\u660e<\/h5>\n<p>\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u6309\u94ae\u5173\u952e\u63a5\u53e3\u5982\u4e0b\u8868\u6240\u793a&#xff1a;<\/p>\n<table>\n<tr>\u63a5\u53e3\u540d\u63cf\u8ff0<\/tr>\n<tbody>\n<tr>\n<td>createAuthorizationWithHuaweiIDRequest(): AuthorizationWithHuaweiIDRequest<\/td>\n<td>\u83b7\u53d6\u6388\u6743\u63a5\u53e3&#xff0c;\u901a\u8fc7AuthorizationWithHuaweiIDRequest\u4f20\u5165\u4e00\u952e\u767b\u5f55\u7684scope&#xff1a;quickLoginAnonymousPhone&#xff0c;\u5373\u53ef\u5728\u6388\u6743\u7ed3\u679c\u4e2d\u83b7\u53d6\u5230\u7528\u6237\u7684\u533f\u540d\u624b\u673a\u53f7\u548cAuthorization Code\u3002<\/td>\n<\/tr>\n<tr>\n<td>constructor(context?: common.Context)<\/td>\n<td>\u521b\u5efa\u6388\u6743\u8bf7\u6c42Controller\u3002<\/td>\n<\/tr>\n<tr>\n<td>executeRequest(request: AuthenticationRequest): Promise<\/td>\n<td>\u901a\u8fc7Promise\u65b9\u5f0f\u6267\u884c\u6388\u6743\u64cd\u4f5c\u3002<\/td>\n<\/tr>\n<tr>\n<td>LoginWithHuaweiIDButton<\/td>\n<td>\u534e\u4e3a\u8d26\u53f7Button\u767b\u5f55\u7ec4\u4ef6\u3002\u8be5\u7ec4\u4ef6\u4ec5\u7eaf\u6587\u672c\u6837\u5f0f\u652f\u6301\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u529f\u80fd\u3002\u5f00\u53d1\u8005\u53ef\u4ee5\u901a\u8fc7\u8c03\u6574\u6309\u94ae\u7684\u5927\u5c0f\u3001\u5706\u89d2\u7b49\u53c2\u6570\u4ee5\u9002\u914dHarmonyOS\u5e94\u7528\u767b\u5f55\u754c\u9762\u3002\u5982\u679c\u4ecd\u7136\u4e0d\u80fd\u6ee1\u8db3\u5f00\u53d1\u8005\u7684\u8bc9\u6c42&#xff0c;\u53ef\u4ee5\u4f7f\u7528Style\u7684BUTTON_CUSTOM\u503c\u5b9a\u4e49\u6309\u94ae\u7684\u6587\u5b57\u989c\u8272\u548c\u80cc\u666f\u8272\u3002<\/td>\n<\/tr>\n<tr>\n<td>onClickLoginWithHuaweiIDButton(callback: AsyncCallback): LoginWithHuaweiIDButtonController<\/td>\n<td>\u6ce8\u518c\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u6309\u94ae\u7684\u7ed3\u679c\u56de\u8c03\u3002<\/td>\n<\/tr>\n<tr>\n<td>setAgreementStatus(agreementStatus: AgreementStatus): LoginWithHuaweiIDButtonController<\/td>\n<td>\u8bbe\u7f6e\u534f\u8bae\u72b6\u6001\u65b9\u6cd5\u3002\u7528\u6237\u672a\u540c\u610f\u534f\u8bae\u524d\u8bbe\u7f6e\u534f\u8bae\u72b6\u6001\u4e3aNOT_ACCEPTED&#xff0c;\u7528\u6237\u540c\u610f\u534f\u8bae\u540e\u8bbe\u7f6e\u534f\u8bae\u72b6\u6001\u4e3aACCEPTED&#xff0c;\u624d\u53ef\u4ee5\u5b8c\u6210\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u3002<\/td>\n<\/tr>\n<tr>\n<td>onClickEvent(callback: AsyncCallback): LoginWithHuaweiIDButtonController<\/td>\n<td>\u6ce8\u518c\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u6309\u94ae\u7684\u70b9\u51fb\u4e8b\u4ef6\u56de\u8c03\u3002<\/td>\n<\/tr>\n<tr>\n<td>continueLogin(callback: AsyncCallback): LoginWithHuaweiIDButtonController<\/td>\n<td>\u7528\u6237\u70b9\u51fb\u534f\u8bae\u5f39\u6846\u7684\u540c\u610f\u5e76\u767b\u5f55\u6309\u94ae\u7ed3\u679c\u56de\u8c03\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u6ce8\u610f<\/p>\n<p>\u4e0a\u8ff0\u63a5\u53e3\u9700\u5728\u9875\u9762\u6216\u81ea\u5b9a\u4e49\u7ec4\u4ef6\u751f\u547d\u5468\u671f\u5185\u8c03\u7528\u3002<\/p>\n<h5>\u5f00\u53d1\u524d\u63d0<\/h5>\n<p>\u5728\u8fdb\u884c\u4ee3\u7801\u5f00\u53d1\u524d&#xff0c;\u8bf7\u5148\u786e\u8ba4\u5df2\u5b8c\u6210\u5f00\u53d1\u51c6\u5907\u5de5\u4f5c\u3002<\/p>\n<p>\u82e5\u672a\u914d\u7f6e\u7b7e\u540d\u548c\u6307\u7eb9&#xff0c;\u5c06\u62a5\u95191001500001 \u5e94\u7528\u6307\u7eb9\u8bc1\u4e66\u6821\u9a8c\u5931\u8d25\u3002<\/p>\n<p>\u82e5\u672a\u7533\u8bf7\u201c\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u201d\u6743\u9650&#xff0c;\u5c06\u62a5\u95191001502014 \u5e94\u7528\u672a\u7533\u8bf7scopes\u6216permissions\u6743\u9650\u3002<\/p>\n<p>\u82e5\u5e94\u7528\u5f00\u542f\u4e86\u4ee3\u7801\u6df7\u6dc6&#xff0c;\u5e94\u7528\u5de5\u7a0b\u4ee3\u7801\u4e2d\u83b7\u53d6\u5230\u7684quickLoginAnonymousPhone&#xff08;\u533f\u540d\u624b\u673a\u53f7&#xff09;\u5c5e\u6027\u9700\u8981\u914d\u7f6e\u6df7\u6dc6\u767d\u540d\u5355\u9632\u6b62\u7f16\u8bd1release\u5305\u65f6\u88ab\u6df7\u6dc6&#xff0c;\u5426\u5219\u65e0\u6cd5\u83b7\u53d6\u5230\u533f\u540d\u624b\u673a\u53f7\u3002\u5728\u8c03\u7528\u83b7\u53d6\u533f\u540d\u624b\u673a\u53f7\u65b9\u6cd5\u5de5\u7a0b\u6a21\u5757\u7684\u6df7\u6dc6\u6587\u4ef6obfuscation-rules.txt\u4e2d\u6dfb\u52a0&#xff1a;<\/p>\n<p># \u5f00\u53d1\u8005\u5f00\u542f\u5c5e\u6027\u6df7\u6dc6\u9700\u8981\u914d\u7f6equickLoginAnonymousPhone\u5c5e\u6027\u767d\u540d\u5355\u9632\u6b62\u5176\u88ab\u6df7\u6dc6<br \/>\n-enable-property-obfuscation<br \/>\n-keep-property-name<br \/>\nquickLoginAnonymousPhone<\/p>\n<h5>\u5ba2\u6237\u7aef\u5f00\u53d1<\/h5>\n<p>\u5f00\u53d1\u8005\u53ef\u53c2\u8003\u4e0b\u8ff0\u5185\u5bb9\u81ea\u884c\u5f00\u53d1&#xff0c;\u4e5f\u53ef\u4f7f\u7528Account Kit\u4e3a\u5e38\u89c1\u7684\u4e09\u65b9\u5f00\u53d1\u6846\u67b6&#xff08;Flutter\u3001H5\u3001React-Native\u3001uni-app&#xff09;\u63d0\u4f9b\u7684SampleCode\u793a\u4f8b\u5de5\u7a0b&#xff0c;\u7528\u4e8e\u63a5\u5165\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u80fd\u529b&#xff0c;\u5177\u4f53\u53ef\u53c2\u8003\u4e09\u65b9\u5f00\u53d1\u6846\u67b6\u63a5\u5165\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u8fdb\u884c\u5f00\u53d1\u3002<\/p>\n<h6>\u7528\u6237\u9996\u6b21\u767b\u5f55\u5e94\u7528<\/h6>\n<p>\u5bfc\u5165\u6a21\u5757\u3002<\/p>\n<p>\u5bfc\u5165Account Kit\u7684authentication\u6a21\u5757\u53ca\u76f8\u5173\u516c\u5171\u6a21\u5757\u3002<\/p>\n<p><span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> authentication <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.AccountKit&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> util <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.ArkTS&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> hilog <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.PerformanceAnalysisKit&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> BusinessError <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.BasicServicesKit&#039;<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>\u83b7\u53d6\u533f\u540d\u624b\u673a\u53f7\u3002<\/p>\n<p>\u8c03\u7528authentication\u6a21\u5757\u7684AuthorizationWithHuaweiIDRequest\u8bf7\u6c42\u83b7\u53d6\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u7684\u533f\u540d\u624b\u673a\u53f7\u3002\u533f\u540d\u624b\u673a\u53f7\u7528\u4e8e\u767b\u5f55\u9875\u9762\u5c55\u793a\u3002<\/p>\n<p>\u6ce8\u610f<\/p>\n<p>\u8be5\u573a\u666f\u4e0bforceAuthorization\u53c2\u6570\u9700\u8bbe\u7f6e\u4e3afalse\u3002<\/p>\n<p>\u6839\u636e\u83b7\u53d6\u7684\u54cd\u5e94\u7ed3\u679c\u5224\u65ad&#xff0c;\u53ef\u80fd\u5b58\u5728\u4ee5\u4e0b\u573a\u666f&#xff1a;<\/p>\n<p>1&#xff09;\u8fd4\u56deArkTS\u9519\u8bef\u7801&#xff0c;\u5f00\u53d1\u8005\u53ef\u53c2\u8003\u4e0b\u8868\u9488\u5bf9\u4e0d\u540c\u9519\u8bef\u7801\u8fdb\u884c\u5904\u7406&#xff1a;<\/p>\n<p>\u88681 \u83b7\u53d6\u533f\u540d\u624b\u673a\u53f7\u9519\u8bef\u7801\u5904\u7406<\/p>\n<table>\n<tr>\u9519\u8bef\u7801\u9519\u8bef\u63cf\u8ff0\u5904\u7406\u5efa\u8bae<\/tr>\n<tbody>\n<tr>\n<td>1001502001<\/td>\n<td>\u7528\u6237\u672a\u767b\u5f55\u534e\u4e3a\u8d26\u53f7<\/td>\n<td>\u5e94\u7528\u5c55\u793a\u5176\u4ed6\u767b\u5f55\u65b9\u5f0f<\/td>\n<\/tr>\n<tr>\n<td>1001502005<\/td>\n<td>\u7f51\u7edc\u9519\u8bef<\/td>\n<td>\u63d0\u793a\u7528\u6237\u68c0\u67e5\u5f53\u524d\u7f51\u7edc\u72b6\u6001\u540e\u91cd\u8bd5<\/td>\n<\/tr>\n<tr>\n<td>1001502009<\/td>\n<td>\u5185\u90e8\u9519\u8bef<\/td>\n<td>\u5e94\u7528\u5c55\u793a\u5176\u4ed6\u767b\u5f55\u65b9\u5f0f<\/td>\n<\/tr>\n<tr>\n<td>1001502014<\/td>\n<td>\u5e94\u7528\u672a\u7533\u8bf7scopes\u6216permissions\u6743\u9650<\/td>\n<td>\u8bf7\u53c2\u80031001502014 \u5e94\u7528\u672a\u7533\u8bf7scopes\u6216permissions\u6743\u9650\u7684\u53ef\u80fd\u539f\u56e0\u548c\u89e3\u51b3\u65b9\u6cd5\u89e3\u51b3\u8be5\u62a5\u9519<\/td>\n<\/tr>\n<tr>\n<td>1001500001<\/td>\n<td>\u5e94\u7528\u6307\u7eb9\u8bc1\u4e66\u6821\u9a8c\u5931\u8d25<\/td>\n<td>\u8bf7\u53c2\u80031001500001 \u5e94\u7528\u6307\u7eb9\u8bc1\u4e66\u6821\u9a8c\u5931\u8d25\u7684\u53ef\u80fd\u539f\u56e0\u548c\u89e3\u51b3\u529e\u6cd5\u89e3\u51b3\u8be5\u62a5\u9519<\/td>\n<\/tr>\n<tr>\n<td>1001500002<\/td>\n<td>\u91cd\u590d\u8bf7\u6c42<\/td>\n<td>\u91cd\u590d\u8bf7\u6c42&#xff0c;\u5e94\u7528\u65e0\u9700\u5904\u7406<\/td>\n<\/tr>\n<tr>\n<td>1001500003<\/td>\n<td>\u4e0d\u652f\u6301\u8be5scopes\u6216permissions<\/td>\n<td>1. \u534e\u4e3a\u8d26\u53f7\u7528\u6237\u6ce8\u518c\u5730\u53ef\u80fd\u4e3a\u4e2d\u56fd\u5883\u5916\u3001\u9999\u6e2f\u7279\u522b\u884c\u653f\u533a\u3001\u6fb3\u95e8\u7279\u522b\u884c\u653f\u533a\u6216\u4e2d\u56fd\u53f0\u6e7e&#xff0c;\u5e94\u7528\u5c55\u793a\u5176\u4ed6\u767b\u5f55\u65b9\u5f0f 2. 5.1.1(19)\u8d77\u652f\u6301TV\u8bbe\u5907&#xff0c;\u5176\u4ed6\u7248\u672c\u5e94\u7528\u53ef\u4ee5\u901a\u8fc7\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u8fdb\u884c\u767b\u5f55<\/td>\n<\/tr>\n<tr>\n<td>12300001<\/td>\n<td>\u7cfb\u7edf\u670d\u52a1\u5f02\u5e38<\/td>\n<td>\u5e94\u7528\u5c55\u793a\u5176\u4ed6\u767b\u5f55\u65b9\u5f0f<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>2&#xff09;\u83b7\u53d6\u5230\u7684\u533f\u540d\u624b\u673a\u53f7\u4e3a\u7a7a&#xff0c;\u8bf4\u660e\u534e\u4e3a\u8d26\u53f7\u6ca1\u6709\u7ed1\u5b9a\u624b\u673a\u53f7\u3001\u6743\u9650\u672a\u7533\u8bf7\u6216\u672a\u751f\u6548&#xff0c;\u4e0a\u8ff0\u5f02\u5e38\u573a\u666f\u5e94\u7528\u9700\u8981\u5c55\u793a\u5176\u4ed6\u767b\u5f55\u65b9\u5f0f\u3002<\/p>\n<p>3&#xff09;\u82e5\u5f00\u53d1\u8005\u5f00\u542f\u4e86\u4ee3\u7801\u6df7\u6dc6&#xff0c;\u9700\u5c06quickLoginAnonymousPhone&#xff08;\u533f\u540d\u624b\u673a\u53f7&#xff09;\u5c5e\u6027\u52a0\u5165\u6df7\u6dc6\u767d\u540d\u5355&#xff0c;\u9632\u6b62\u5176\u88ab\u6df7\u6dc6\u3002<\/p>\n<p>  <span class=\"token keyword\">async<\/span> <span class=\"token function\">getQuickLoginAnonymousPhone<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token operator\">:<\/span> <span class=\"token builtin\">Promise<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token builtin\">string<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u521b\u5efa\u6388\u6743\u8bf7\u6c42&#xff0c;\u5e76\u8bbe\u7f6e\u53c2\u6570<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> authRequest <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">authentication<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">HuaweiIDProvider<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">createAuthorizationWithHuaweiIDRequest<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u83b7\u53d6\u533f\u540d\u624b\u673a\u53f7\u9700\u4f20quickLoginAnonymousPhone\u8fd9\u4e2ascope&#xff0c;\u4f20\u53c2\u4e4b\u524d\u9700\u8981\u5148\u7533\u8bf7\u201c\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u201d\u6743\u9650&#xff0c;\u5426\u5219\u4f1a\u8fd4\u56de1001502014\u9519\u8bef\u7801<\/span><br \/>\n    authRequest<span class=\"token punctuation\">.<\/span>scopes <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;quickLoginAnonymousPhone&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u5efa\u8bae\u4f7f\u7528generateRandomUUID\u751f\u6210state&#xff0c;\u53ef\u7528\u4e8e\u4e00\u81f4\u6027\u6bd4\u5bf9&#xff0c;\u9632\u6b62\u8de8\u7ad9\u653b\u51fb<\/span><br \/>\n    authRequest<span class=\"token punctuation\">.<\/span>state <span class=\"token operator\">&#061;<\/span> util<span class=\"token punctuation\">.<\/span><span class=\"token function\">generateRandomUUID<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u4e00\u952e\u767b\u5f55\u573a\u666f\u8be5\u53c2\u6570\u5fc5\u987b\u8bbe\u7f6e\u4e3afalse<\/span><br \/>\n    authRequest<span class=\"token punctuation\">.<\/span>forceAuthorization <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">false<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> controller <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">authentication<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">AuthenticationController<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">let<\/span> quickLoginAnonymousPhone<span class=\"token operator\">:<\/span> <span class=\"token builtin\">string<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#039;&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ &#8230;<\/span><br \/>\n    <span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token keyword\">await<\/span> controller<span class=\"token punctuation\">.<\/span><span class=\"token function\">executeRequest<\/span><span class=\"token punctuation\">(<\/span>authRequest<span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">then<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>response<span class=\"token operator\">:<\/span> authentication<span class=\"token punctuation\">.<\/span>AuthorizationWithHuaweiIDResponse<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n          <span class=\"token comment\">\/\/ \u83b7\u53d6\u5230\u533f\u540d\u624b\u673a\u53f7<\/span><br \/>\n          quickLoginAnonymousPhone <span class=\"token operator\">&#061;<\/span> response<span class=\"token punctuation\">.<\/span>data<span class=\"token operator\">?.<\/span>extraInfo<span class=\"token operator\">?.<\/span>quickLoginAnonymousPhone <span class=\"token keyword\">as<\/span> <span class=\"token builtin\">string<\/span><span class=\"token punctuation\">;<\/span><br \/>\n          <span class=\"token comment\">\/\/ &#8230;<\/span><br \/>\n          <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>quickLoginAnonymousPhone<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;testTag&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;Succeeded in authentication.&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token comment\">\/\/ &#8230;<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> quickLoginAnonymousPhone<span class=\"token punctuation\">;<\/span><br \/>\n          <span class=\"token punctuation\">}<\/span><br \/>\n          hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;testTag&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;Succeeded in authentication. AnonymousPhone is empty.&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n          <span class=\"token comment\">\/\/ &#8230;<\/span><br \/>\n          <span class=\"token comment\">\/\/ \u672a\u83b7\u53d6\u5230\u533f\u540d\u624b\u673a\u53f7&#xff0c;\u5e94\u7528\u9700\u8981\u8df3\u8f6c\u5230\u5176\u4ed6\u65b9\u5f0f\u767b\u5f55\u9875\u9762<\/span><br \/>\n          <span class=\"token keyword\">return<\/span> quickLoginAnonymousPhone<span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">catch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token operator\">:<\/span> BusinessError<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n          <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">dealAllError<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n      <span class=\"token keyword\">return<\/span> quickLoginAnonymousPhone<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">catch<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">dealAllError<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token keyword\">return<\/span> quickLoginAnonymousPhone<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><\/p>\n<p>  <span class=\"token comment\">\/\/ \u9519\u8bef\u5904\u7406<\/span><br \/>\n  <span class=\"token function\">dealAllError<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token operator\">:<\/span> BusinessError<span class=\"token punctuation\">)<\/span><span class=\"token operator\">:<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;testTag&#039;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n      <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">Failed to get quickLoginAnonymousPhone, errorCode is <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>error<span class=\"token punctuation\">.<\/span>code<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token string\">, errorMessage is <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>error<span class=\"token punctuation\">.<\/span>message<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u5728\u5e94\u7528\u767b\u5f55\u6d89\u53caUI\u4ea4\u4e92\u573a\u666f\u4e0b&#xff0c;\u5efa\u8bae\u6309\u7167\u5982\u4e0b\u9519\u8bef\u7801\u6307\u5bfc\u63d0\u793a\u7528\u6237<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_LOGIN_OUT<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token comment\">\/\/ \u534e\u4e3a\u8d26\u53f7\u672a\u767b\u5f55&#xff0c;\u5e94\u7528\u9700\u8981\u5c55\u793a\u5176\u4ed6\u767b\u5f55\u65b9\u5f0f<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_NETWORK_ERROR<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token comment\">\/\/ \u7f51\u7edc\u9519\u8bef&#xff0c;\u8bf7\u68c0\u67e5\u5f53\u524d\u7f51\u7edc\u72b6\u6001\u5e76\u91cd\u8bd5<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_INTERNAL_ERROR<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token comment\">\/\/ \u767b\u5f55\u5931\u8d25&#xff0c;\u5e94\u7528\u9700\u8981\u5c55\u793a\u5176\u4ed6\u767b\u5f55\u65b9\u5f0f<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_SYSTEM_SERVICE<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token comment\">\/\/ \u7cfb\u7edf\u670d\u52a1\u5f02\u5e38&#xff0c;\u5e94\u7528\u9700\u8981\u5c55\u793a\u5176\u4ed6\u767b\u5f55\u65b9\u5f0f<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_REQUEST_REFUSE<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token comment\">\/\/ \u91cd\u590d\u8bf7\u6c42&#xff0c;\u5e94\u7528\u65e0\u9700\u5904\u7406<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token comment\">\/\/ \u5e94\u7528\u767b\u5f55\u5931\u8d25&#xff0c;\u5e94\u7528\u9700\u8981\u5c55\u793a\u5176\u4ed6\u767b\u5f55\u65b9\u5f0f<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><br \/>\n  <span class=\"token comment\">\/\/ &#8230;<\/span><br \/>\n  <span class=\"token keyword\">export<\/span> <span class=\"token keyword\">enum<\/span> ErrorCode <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u8d26\u53f7\u672a\u767b\u5f55<\/span><br \/>\n    <span class=\"token constant\">ERROR_CODE_LOGIN_OUT<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001502001<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u7f51\u7edc\u9519\u8bef<\/span><br \/>\n    <span class=\"token constant\">ERROR_CODE_NETWORK_ERROR<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001502005<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u5185\u90e8\u9519\u8bef<\/span><br \/>\n    <span class=\"token constant\">ERROR_CODE_INTERNAL_ERROR<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001502009<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u7cfb\u7edf\u670d\u52a1\u5f02\u5e38<\/span><br \/>\n    <span class=\"token constant\">ERROR_CODE_SYSTEM_SERVICE<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">12300001<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u91cd\u590d\u8bf7\u6c42<\/span><br \/>\n    <span class=\"token constant\">ERROR_CODE_REQUEST_REFUSE<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001500002<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><\/p>\n<p>\u5c55\u793a\u4e00\u952e\u767b\u5f55\u9875\u9762\u5e76\u83b7\u53d6Authorization Code<\/p>\n<p>\u5c06\u83b7\u53d6\u5230\u7684\u533f\u540d\u624b\u673a\u53f7\u8bbe\u7f6e\u7ed9\u4e0b\u9762QuickLoginButtonComponent\u7ec4\u4ef6\u793a\u4f8b\u4ee3\u7801\u4e2d\u7684quickLoginAnonymousPhone\u53d8\u91cf&#xff0c;\u8c03\u7528LoginWithHuaweiIDButton\u7ec4\u4ef6&#xff0c;\u5b9e\u73b0\u5e94\u7528\u81ea\u5df1\u7684\u767b\u5f55\u9875\u9762&#xff0c;\u5e76\u5c55\u793a\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u6309\u94ae\u548c\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u8ba4\u8bc1\u534f\u8bae&#xff08;Account Kit\u63d0\u4f9b\u8df3\u8f6c\u94fe\u63a5&#xff0c;\u5e94\u7528\u9700\u5b9e\u73b0\u534f\u8bae\u8df3\u8f6c&#xff0c;\u53c2\u89c1\u7ea6\u675f\u4e0e\u9650\u5236\u7b2c2\u70b9&#xff09;&#xff0c;\u7528\u6237\u540c\u610f\u534f\u8bae\u5e76\u70b9\u51fb\u4e00\u952e\u767b\u5f55\u6309\u94ae\u540e&#xff0c;\u53ef\u83b7\u53d6\u5230Authorization Code&#xff0c;\u5c06\u8be5\u503c\u4f20\u7ed9\u5e94\u7528\u670d\u52a1\u7aef\u7528\u4e8e\u83b7\u53d6\u7528\u6237\u4fe1\u606f&#xff08;\u5b8c\u6574\u624b\u673a\u53f7\u3001UnionID\u3001OpenID&#xff09;\u3002\u901a\u8fc7code\u51ed\u8bc1\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u53ef\u4ee5\u6709\u6548\u907f\u514d\u56e0\u6570\u636e\u904d\u5386\u3001\u8eab\u4efd\u4f2a\u9020\u3001\u91cd\u653e\u653b\u51fb\u5bfc\u81f4\u7684\u5b89\u5168\u98ce\u9669\u3002<\/p>\n<p><span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> loginComponentManager<span class=\"token punctuation\">,<\/span> LoginWithHuaweiIDButton <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.AccountKit&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> hilog <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.PerformanceAnalysisKit&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> BusinessError <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.BasicServicesKit&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> connection <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.NetworkKit&#039;<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token decorator\"><span class=\"token at operator\">&#064;<\/span><span class=\"token function\">Component<\/span><\/span><br \/>\nstruct QuickLoginComponent <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u7b2c\u4e8c\u6b65\u83b7\u53d6\u7684\u533f\u540d\u624b\u673a\u53f7\u4f20\u5230\u6b64\u5904<\/span><br \/>\n  <span class=\"token decorator\"><span class=\"token at operator\">&#064;<\/span><span class=\"token function\">State<\/span><\/span> quickLoginAnonymousPhone<span class=\"token operator\">:<\/span> <span class=\"token builtin\">string<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#039;&#039;<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>  <span class=\"token function\">build<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>quickLoginAnonymousPhone<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token function\">QuickLoginButtonComponent<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n        quickLoginAnonymousPhone<span class=\"token operator\">:<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>quickLoginAnonymousPhone<br \/>\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token comment\">\/\/ \u6388\u6743\u83b7\u53d6\u533f\u540d\u624b\u673a\u53f7\u4e3a\u7a7a\u65f6&#xff0c;\u8bf7\u5e94\u7528\u81ea\u884c\u5b9e\u73b0\u5176\u4ed6\u65b9\u5f0f\u767b\u5f55\u9875\u9762<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token decorator\"><span class=\"token at operator\">&#064;<\/span><span class=\"token function\">Component<\/span><\/span><br \/>\nstruct QuickLoginButtonComponent <span class=\"token punctuation\">{<\/span><br \/>\n  logTag<span class=\"token operator\">:<\/span> <span class=\"token builtin\">string<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#039;QuickLoginButtonComponent&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  domainId<span class=\"token operator\">:<\/span> <span class=\"token builtin\">number<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token decorator\"><span class=\"token at operator\">&#064;<\/span><span class=\"token function\">State<\/span><\/span> quickLoginAnonymousPhone<span class=\"token operator\">:<\/span> <span class=\"token builtin\">string<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#039;&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u662f\u5426\u52fe\u9009\u534f\u8bae<\/span><br \/>\n  <span class=\"token decorator\"><span class=\"token at operator\">&#064;<\/span><span class=\"token function\">State<\/span><\/span> isSelected<span class=\"token operator\">:<\/span> <span class=\"token builtin\">boolean<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">false<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u534e\u4e3a\u8d26\u53f7\u7528\u6237\u8ba4\u8bc1\u534f\u8bae\u94fe\u63a5&#xff0c;\u6b64\u5904\u4ec5\u4e3a\u793a\u4f8b&#xff0c;\u5b9e\u9645\u5f00\u53d1\u8fc7\u7a0b\u4e2d&#xff0c;\u51fa\u4e8e\u53ef\u7ef4\u62a4\u6027\u3001\u5b89\u5168\u6027\u7b49\u65b9\u9762\u8003\u8651&#xff0c;\u57df\u540d\u4e0d\u5efa\u8bae\u786c\u7f16\u7801\u5728\u672c\u5730<\/span><br \/>\n  <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token constant\">USER_AUTHENTICATION_PROTOCOL<\/span><span class=\"token operator\">:<\/span> <span class=\"token builtin\">string<\/span> <span class=\"token operator\">&#061;<\/span><br \/>\n    <span class=\"token string\">&#039;https:\/\/privacy.consumer.huawei.com\/legal\/id\/authentication-terms.htm?code&#061;CN&amp;language&#061;zh-CN&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token constant\">USER_SERVICE_TAG<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#039;\u7528\u6237\u670d\u52a1\u534f\u8bae&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token constant\">PRIVACY_TAG<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#039;\u9690\u79c1\u534f\u8bae&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token constant\">USER_AUTHENTICATION_TAG<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#039;\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u8ba4\u8bc1\u534f\u8bae&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u5b9a\u4e49LoginWithHuaweiIDButton\u5c55\u793a\u7684\u9690\u79c1\u6587\u672c&#xff0c;\u5c55\u793a\u5e94\u7528\u7684\u7528\u6237\u670d\u52a1\u534f\u8bae\u3001\u9690\u79c1\u534f\u8bae\u548c\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u8ba4\u8bc1\u534f\u8bae<\/span><br \/>\n  privacyText<span class=\"token operator\">:<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>PrivacyText<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">{<\/span><br \/>\n    text<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;\u5df2\u9605\u8bfb\u5e76\u540c\u610f&#039;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    type<span class=\"token operator\">:<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>TextType<span class=\"token punctuation\">.<\/span><span class=\"token constant\">PLAIN_TEXT<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    text<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;\u300a\u7528\u6237\u670d\u52a1\u534f\u8bae\u300b&#039;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    tag<span class=\"token operator\">:<\/span> QuickLoginButtonComponent<span class=\"token punctuation\">.<\/span><span class=\"token constant\">USER_SERVICE_TAG<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    type<span class=\"token operator\">:<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>TextType<span class=\"token punctuation\">.<\/span><span class=\"token constant\">RICH_TEXT<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    text<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;\u300a\u9690\u79c1\u534f\u8bae\u300b&#039;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    tag<span class=\"token operator\">:<\/span> QuickLoginButtonComponent<span class=\"token punctuation\">.<\/span><span class=\"token constant\">PRIVACY_TAG<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    type<span class=\"token operator\">:<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>TextType<span class=\"token punctuation\">.<\/span><span class=\"token constant\">RICH_TEXT<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    text<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;\u548c&#039;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    type<span class=\"token operator\">:<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>TextType<span class=\"token punctuation\">.<\/span><span class=\"token constant\">PLAIN_TEXT<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    text<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;\u300a\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u8ba4\u8bc1\u534f\u8bae\u300b&#039;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    tag<span class=\"token operator\">:<\/span> QuickLoginButtonComponent<span class=\"token punctuation\">.<\/span><span class=\"token constant\">USER_AUTHENTICATION_TAG<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    type<span class=\"token operator\">:<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>TextType<span class=\"token punctuation\">.<\/span><span class=\"token constant\">RICH_TEXT<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    text<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;\u3002&#039;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    type<span class=\"token operator\">:<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>TextType<span class=\"token punctuation\">.<\/span><span class=\"token constant\">PLAIN_TEXT<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u6784\u9020LoginWithHuaweiIDButton\u7ec4\u4ef6\u7684\u63a7\u5236\u5668<\/span><br \/>\n  controller<span class=\"token operator\">:<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>LoginWithHuaweiIDButtonController <span class=\"token operator\">&#061;<\/span><br \/>\n    <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">loginComponentManager<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">LoginWithHuaweiIDButtonController<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n      <span class=\"token comment\">\/**<br \/>\n       * \u5f53\u5e94\u7528\u4f7f\u7528\u81ea\u5b9a\u4e49\u7684\u767b\u5f55\u9875\u65f6&#xff0c;\u5982\u679c\u7528\u6237\u672a\u540c\u610f\u534f\u8bae&#xff0c;\u9700\u8981\u8bbe\u7f6e\u534f\u8bae\u72b6\u6001\u4e3aNOT_ACCEPTED&#xff0c;\u5f53\u7528\u6237\u540c\u610f\u534f\u8bae\u540e\u518d\u8bbe\u7f6e<br \/>\n       * \u534f\u8bae\u72b6\u6001\u4e3aACCEPTED&#xff0c;\u624d\u53ef\u4ee5\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u529f\u80fd<br \/>\n       *\/<\/span><br \/>\n      <span class=\"token punctuation\">.<\/span><span class=\"token function\">setAgreementStatus<\/span><span class=\"token punctuation\">(<\/span>loginComponentManager<span class=\"token punctuation\">.<\/span>AgreementStatus<span class=\"token punctuation\">.<\/span><span class=\"token constant\">NOT_ACCEPTED<\/span><span class=\"token punctuation\">)<\/span><br \/>\n      <span class=\"token punctuation\">.<\/span><span class=\"token function\">onClickLoginWithHuaweiIDButton<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token operator\">:<\/span> BusinessError <span class=\"token operator\">|<\/span> <span class=\"token keyword\">undefined<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        response<span class=\"token operator\">:<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>HuaweiIDCredential<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">handleLoginWithHuaweiIDButton<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">,<\/span> response<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n      <span class=\"token punctuation\">.<\/span><span class=\"token function\">onClickEvent<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token operator\">:<\/span> BusinessError<span class=\"token punctuation\">,<\/span> clickEvent<span class=\"token operator\">:<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>ClickEvent<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n          hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>domainId<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>logTag<span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">onClickEvent error. errCode is <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>error<span class=\"token punctuation\">.<\/span>code<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token string\">, errMessage is <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>error<span class=\"token punctuation\">.<\/span>message<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n          <span class=\"token keyword\">return<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>domainId<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>logTag<span class=\"token punctuation\">,<\/span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">onClickEvent clickEvent: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>clickEvent<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u8bbe\u7f6e\u6309\u94ae\u4e3a\u4e0d\u53ef\u70b9\u51fb\u6001&#xff0c;\u5f85\u4e1a\u52a1\u903b\u8f91\u5904\u7406\u5b8c\u6210\u540e&#xff0c;\u518d\u8bbe\u7f6e\u4e3a\u53ef\u70b9\u51fb\u6001<\/span><br \/>\n        <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>controller<span class=\"token punctuation\">.<\/span><span class=\"token function\">setEnabled<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">false<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  agreementDialog<span class=\"token operator\">:<\/span> CustomDialogController <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">CustomDialogController<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n    builder<span class=\"token operator\">:<\/span> <span class=\"token function\">AgreementDialog<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n      privacyText<span class=\"token operator\">:<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>privacyText<span class=\"token punctuation\">,<\/span><br \/>\n      <span class=\"token function-variable function\">cancel<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>agreementDialog<span class=\"token punctuation\">.<\/span><span class=\"token function\">close<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>controller<span class=\"token punctuation\">.<\/span><span class=\"token function\">setAgreementStatus<\/span><span class=\"token punctuation\">(<\/span>loginComponentManager<span class=\"token punctuation\">.<\/span>AgreementStatus<span class=\"token punctuation\">.<\/span><span class=\"token constant\">NOT_ACCEPTED<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n      <span class=\"token function-variable function\">confirm<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>agreementDialog<span class=\"token punctuation\">.<\/span><span class=\"token function\">close<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>isSelected <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>controller<span class=\"token punctuation\">.<\/span><span class=\"token function\">setAgreementStatus<\/span><span class=\"token punctuation\">(<\/span>loginComponentManager<span class=\"token punctuation\">.<\/span>AgreementStatus<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ACCEPTED<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u8c03\u7528\u6b64\u65b9\u6cd5&#xff0c;\u540c\u610f\u534f\u8bae\u4e0e\u767b\u5f55\u4e00\u5e76\u5b8c\u6210&#xff0c;\u65e0\u9700\u518d\u6b21\u70b9\u51fb\u767b\u5f55\u6309\u94ae<\/span><br \/>\n        <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>controller<span class=\"token punctuation\">.<\/span><span class=\"token function\">continueLogin<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token operator\">:<\/span> BusinessError<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n          <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>domainId<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>logTag<span class=\"token punctuation\">,<\/span><br \/>\n              <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">Failed to login with agreementDialog. errCode is <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>error<span class=\"token punctuation\">.<\/span>code<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token string\">, errMessage is <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>error<span class=\"token punctuation\">.<\/span>message<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n          <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>domainId<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>logTag<span class=\"token punctuation\">,<\/span><br \/>\n              <span class=\"token string\">&#039;Succeeded in clicking agreementDialog continueLogin.&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n          <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n      <span class=\"token function-variable function\">clickHyperlinkText<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>agreementDialog<span class=\"token punctuation\">.<\/span><span class=\"token function\">close<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">jumpToPrivacyWebView<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    autoCancel<span class=\"token operator\">:<\/span> <span class=\"token boolean\">false<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    alignment<span class=\"token operator\">:<\/span> DialogAlignment<span class=\"token punctuation\">.<\/span>Center<br \/>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>  <span class=\"token comment\">\/\/ Toast\u63d0\u793a<\/span><br \/>\n  <span class=\"token function\">showToast<\/span><span class=\"token punctuation\">(<\/span>resource<span class=\"token operator\">:<\/span> <span class=\"token builtin\">string<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getUIContext<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getPromptAction<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">showToast<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n        message<span class=\"token operator\">:<\/span> resource<span class=\"token punctuation\">,<\/span><br \/>\n        duration<span class=\"token operator\">:<\/span> <span class=\"token number\">2000<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">catch<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token keyword\">const<\/span> message <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">(<\/span>error <span class=\"token keyword\">as<\/span> BusinessError<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>message<span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token keyword\">const<\/span> code <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">(<\/span>error <span class=\"token keyword\">as<\/span> BusinessError<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>code<span class=\"token punctuation\">;<\/span><br \/>\n      hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>domainId<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>logTag<span class=\"token punctuation\">,<\/span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">showToast args  errCode is <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>code<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token string\">, errMessage is <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>message<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><\/p>\n<p>  <span class=\"token comment\">\/\/ \u8df3\u8f6c\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u8ba4\u8bc1\u534f\u8bae\u9875&#xff0c;\u8be5\u9875\u9762\u9700\u5728\u5de5\u7a0bmain_pages.json\u6587\u4ef6\u914d\u7f6e<\/span><br \/>\n  <span class=\"token function\">jumpToPrivacyWebView<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token comment\">\/\/ \u9700\u5728module.json5\u4e2d\u914d\u7f6e\u201cohos.permission.GET_NETWORK_INFO\u201d\u6743\u9650<\/span><br \/>\n      <span class=\"token keyword\">const<\/span> checkNetConn <span class=\"token operator\">&#061;<\/span> connection<span class=\"token punctuation\">.<\/span><span class=\"token function\">hasDefaultNetSync<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token operator\">!<\/span>checkNetConn<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">showToast<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;\u670d\u52a1\u6216\u7f51\u7edc\u5f02\u5e38&#xff0c;\u8bf7\u7a0d\u540e\u91cd\u8bd5&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">catch<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token keyword\">const<\/span> message <span class=\"token operator\">&#061;<\/span> error<span class=\"token punctuation\">.<\/span>message <span class=\"token keyword\">as<\/span> <span class=\"token builtin\">string<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token keyword\">const<\/span> code <span class=\"token operator\">&#061;<\/span> error<span class=\"token punctuation\">.<\/span>code <span class=\"token keyword\">as<\/span> <span class=\"token builtin\">string<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;testTag&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">Failed to hasDefaultNetSync, errCode is <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>code<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token string\">, errMessage is <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>message<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getUIContext<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getRouter<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">pushUrl<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token comment\">\/\/ \u9700\u5728module.json5\u914d\u7f6e\u201cohos.permission.INTERNET\u201d\u7f51\u7edc\u6743\u9650<\/span><br \/>\n      url<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;pages\/WebPage&#039;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n      params<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        isFromDialog<span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        url<span class=\"token operator\">:<\/span> QuickLoginButtonComponent<span class=\"token punctuation\">.<\/span><span class=\"token constant\">USER_AUTHENTICATION_PROTOCOL<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>err<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>err<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>domainId<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>logTag<span class=\"token punctuation\">,<\/span><br \/>\n          <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">Failed to jumpToPrivacyWebView, errCode is <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>err<span class=\"token punctuation\">.<\/span>code<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token string\">, errMessage is <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>err<span class=\"token punctuation\">.<\/span>message<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><\/p>\n<p>  <span class=\"token function\">handleLoginWithHuaweiIDButton<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token operator\">:<\/span> BusinessError <span class=\"token operator\">|<\/span> <span class=\"token keyword\">undefined<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    response<span class=\"token operator\">:<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>HuaweiIDCredential<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>domainId<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>logTag<span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">Failed to login with LoginWithHuaweiIDButton. errCode is <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>error<span class=\"token punctuation\">.<\/span>code<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token string\">, errMessage is <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>error<span class=\"token punctuation\">.<\/span>message<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_NETWORK_ERROR<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getUIContext<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">showAlertDialog<\/span><span class=\"token punctuation\">(<\/span><br \/>\n          <span class=\"token punctuation\">{<\/span><br \/>\n            message<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;\u7f51\u7edc\u672a\u8fde\u63a5&#xff0c;\u8bf7\u68c0\u67e5\u7f51\u7edc\u8bbe\u7f6e\u3002&#039;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            offset<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span> dx<span class=\"token operator\">:<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> dy<span class=\"token operator\">:<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token number\">12<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            alignment<span class=\"token operator\">:<\/span> DialogAlignment<span class=\"token punctuation\">.<\/span>Bottom<span class=\"token punctuation\">,<\/span><br \/>\n            autoCancel<span class=\"token operator\">:<\/span> <span class=\"token boolean\">false<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            confirm<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n              value<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;\u77e5\u9053\u4e86&#039;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n              <span class=\"token function-variable function\">action<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                <span class=\"token comment\">\/\/ \u7528\u6237\u70b9\u51fb\u201c\u77e5\u9053\u4e86\u201d\u6309\u94ae&#xff0c;\u53ef\u4e8e\u6b64\u5904\u8865\u5145\u4e1a\u52a1\u903b\u8f91<\/span><br \/>\n              <span class=\"token punctuation\">}<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><br \/>\n          <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_AGREEMENT_STATUS_NOT_ACCEPTED<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u672a\u540c\u610f\u534f\u8bae&#xff0c;\u5f39\u51fa\u534f\u8bae\u5f39\u6846&#xff0c;\u63a8\u8350\u4f7f\u7528\u8be5\u56de\u8c03\u65b9\u5f0f<\/span><br \/>\n        <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>agreementDialog<span class=\"token punctuation\">.<\/span><span class=\"token function\">open<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_LOGIN_OUT<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u534e\u4e3a\u8d26\u53f7\u672a\u767b\u5f55\u63d0\u793a<\/span><br \/>\n        <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">showToast<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;\u534e\u4e3a\u8d26\u53f7\u672a\u767b\u5f55&#xff0c;\u8bf7\u91cd\u8bd5&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_NOT_SUPPORTED<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u4e0d\u652f\u6301\u8be5scopes\u6216permissions\u63d0\u793a<\/span><br \/>\n        <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">showToast<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;\u8be5scopes\u6216permissions\u4e0d\u652f\u6301&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_PARAMETER_ERROR<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u53c2\u6570\u9519\u8bef\u63d0\u793a<\/span><br \/>\n        <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">showToast<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;\u53c2\u6570\u9519\u8bef&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_USER_CANCEL<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u7528\u6237\u53d6\u6d88&#xff0c;\u65e0\u9700\u7279\u522b\u5904\u7406<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u5176\u4ed6\u63d0\u793a\u7cfb\u7edf\u6216\u670d\u52a1\u5f02\u5e38<\/span><br \/>\n        <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">showToast<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;\u670d\u52a1\u6216\u7f51\u7edc\u5f02\u5e38&#xff0c;\u8bf7\u7a0d\u540e\u91cd\u8bd5&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><br \/>\n      <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>controller<span class=\"token punctuation\">.<\/span><span class=\"token function\">setEnabled<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">true<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token keyword\">return<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>isSelected<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>response<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n          hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>domainId<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>logTag<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;Succeeded in clicking LoginWithHuaweiIDButton.&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n          <span class=\"token comment\">\/\/ \u5f00\u53d1\u8005\u6839\u636e\u5b9e\u9645\u4e1a\u52a1\u60c5\u51b5\u4f7f\u7528\u4ee5\u4e0b\u4fe1\u606f<\/span><br \/>\n          <span class=\"token keyword\">const<\/span> authCode <span class=\"token operator\">&#061;<\/span> response<span class=\"token punctuation\">.<\/span>authorizationCode<span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>agreementDialog<span class=\"token punctuation\">.<\/span><span class=\"token function\">open<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">catch<\/span> <span class=\"token punctuation\">(<\/span>err<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>domainId<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>logTag<span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">Failed to login with LoginWithHuaweiIDButton, errCode: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>err<span class=\"token punctuation\">.<\/span>code<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token string\">, errMessage: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>err<span class=\"token punctuation\">.<\/span>message<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getUIContext<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">showAlertDialog<\/span><span class=\"token punctuation\">(<\/span><br \/>\n        <span class=\"token punctuation\">{<\/span><br \/>\n          message<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;\u670d\u52a1\u6216\u7f51\u7edc\u5f02\u5e38&#xff0c;\u8bf7\u7a0d\u540e\u91cd\u8bd5&#039;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n          offset<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span> dx<span class=\"token operator\">:<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> dy<span class=\"token operator\">:<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token number\">12<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n          alignment<span class=\"token operator\">:<\/span> DialogAlignment<span class=\"token punctuation\">.<\/span>Bottom<span class=\"token punctuation\">,<\/span><br \/>\n          autoCancel<span class=\"token operator\">:<\/span> <span class=\"token boolean\">false<\/span><span class=\"token punctuation\">,<\/span><br \/>\n          confirm<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            value<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;\u77e5\u9053\u4e86&#039;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token function-variable function\">action<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n              <span class=\"token comment\">\/\/ \u7528\u6237\u70b9\u51fb\u201c\u77e5\u9053\u4e86\u201d\u6309\u94ae&#xff0c;\u53ef\u4e8e\u6b64\u5904\u8865\u5145\u4e1a\u52a1\u903b\u8f91<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><br \/>\n          <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n      <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">finally<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>controller<span class=\"token punctuation\">.<\/span><span class=\"token function\">setEnabled<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">true<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><\/p>\n<p>  <span class=\"token function\">build<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token function\">Scroll<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n          <span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token comment\">\/\/ \u6b64\u5904\u4e3a\u793a\u4f8b\u8d44\u6e90&#xff0c;\u5f00\u53d1\u8005\u53ef\u4f7f\u7528\u5e94\u7528\u56fe\u6807\u8fdb\u884c\u66ff\u6362&#xff0c;\u4ee5\u4fdd\u8bc1\u6b63\u5e38\u7f16\u8bd1\u8fd0\u884c<\/span><br \/>\n            <span class=\"token function\">Image<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;app.media.app_icon&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">width<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">48<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">height<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">48<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">draggable<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">false<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">copyOption<\/span><span class=\"token punctuation\">(<\/span>CopyOptions<span class=\"token punctuation\">.<\/span>None<span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">onComplete<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>domainId<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>logTag<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;appIcon loading success.&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n              <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">onError<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>domainId<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>logTag<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;appIcon loading fail.&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n              <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>            <span class=\"token function\">Text<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;app.string.app_name&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontFamily<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.string.ohos_id_text_font_family_medium&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontWeight<\/span><span class=\"token punctuation\">(<\/span>FontWeight<span class=\"token punctuation\">.<\/span>Bold<span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">maxFontSize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.float.ohos_id_text_size_headline8&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">minFontSize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.float.ohos_id_text_size_body1&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">maxLines<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontColor<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.color.ohos_id_color_text_primary&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">constraintSize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> maxWidth<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;100%&#039;<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">margin<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n                top<span class=\"token operator\">:<\/span> <span class=\"token number\">12<\/span><br \/>\n              <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>            <span class=\"token function\">Text<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;\u5e94\u7528\u63cf\u8ff0&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontSize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.float.ohos_id_text_size_body2&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontColor<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.color.ohos_id_color_text_secondary&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontFamily<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.string.ohos_id_text_font_family_regular&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontWeight<\/span><span class=\"token punctuation\">(<\/span>FontWeight<span class=\"token punctuation\">.<\/span>Regular<span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">constraintSize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> maxWidth<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;100%&#039;<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">margin<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n                top<span class=\"token operator\">:<\/span> <span class=\"token number\">8<\/span><br \/>\n              <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">margin<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n            top<span class=\"token operator\">:<\/span> <span class=\"token number\">100<\/span><br \/>\n          <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>          <span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token function\">Text<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>quickLoginAnonymousPhone<span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontSize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">36<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontColor<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.color.ohos_id_color_text_primary&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontFamily<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.string.ohos_id_text_font_family_medium&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontWeight<\/span><span class=\"token punctuation\">(<\/span>FontWeight<span class=\"token punctuation\">.<\/span>Bold<span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">lineHeight<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">48<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">textAlign<\/span><span class=\"token punctuation\">(<\/span>TextAlign<span class=\"token punctuation\">.<\/span>Center<span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">maxLines<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">constraintSize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> maxWidth<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;100%&#039;<\/span><span class=\"token punctuation\">,<\/span> minHeight<span class=\"token operator\">:<\/span> <span class=\"token number\">48<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>            <span class=\"token function\">Text<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;\u534e\u4e3a\u8d26\u53f7\u7ed1\u5b9a\u53f7\u7801&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontSize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.float.ohos_id_text_size_body2&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontColor<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.color.ohos_id_color_text_secondary&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontFamily<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.string.ohos_id_text_font_family_regular&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontWeight<\/span><span class=\"token punctuation\">(<\/span>FontWeight<span class=\"token punctuation\">.<\/span>Regular<span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">lineHeight<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">19<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">textAlign<\/span><span class=\"token punctuation\">(<\/span>TextAlign<span class=\"token punctuation\">.<\/span>Center<span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">maxLines<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">constraintSize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> maxWidth<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;100%&#039;<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">margin<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n                top<span class=\"token operator\">:<\/span> <span class=\"token number\">8<\/span><br \/>\n              <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">margin<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n            top<span class=\"token operator\">:<\/span> <span class=\"token number\">64<\/span><br \/>\n          <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>          <span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token function\">LoginWithHuaweiIDButton<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n              params<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                <span class=\"token comment\">\/\/ LoginWithHuaweiIDButton\u652f\u6301\u7684\u6837\u5f0f<\/span><br \/>\n                style<span class=\"token operator\">:<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>Style<span class=\"token punctuation\">.<\/span><span class=\"token constant\">BUTTON_RED<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                <span class=\"token comment\">\/\/ \u8d26\u53f7\u767b\u5f55\u6309\u94ae\u5728\u767b\u5f55\u8fc7\u7a0b\u4e2d\u5c55\u793a\u52a0\u8f7d\u6001<\/span><br \/>\n                extraStyle<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                  buttonStyle<span class=\"token operator\">:<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">loginComponentManager<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">ButtonStyle<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">loadingStyle<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n                    show<span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span><br \/>\n                  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                <span class=\"token comment\">\/\/ LoginWithHuaweiIDButton\u7684\u8fb9\u6846\u5706\u89d2\u534a\u5f84<\/span><br \/>\n                borderRadius<span class=\"token operator\">:<\/span> <span class=\"token number\">24<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                <span class=\"token comment\">\/\/ LoginWithHuaweiIDButton\u652f\u6301\u7684\u767b\u5f55\u7c7b\u578b<\/span><br \/>\n                loginType<span class=\"token operator\">:<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>LoginType<span class=\"token punctuation\">.<\/span><span class=\"token constant\">QUICK_LOGIN<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                <span class=\"token comment\">\/\/ LoginWithHuaweiIDButton\u652f\u6301\u6309\u94ae\u7684\u6837\u5f0f\u8ddf\u968f\u7cfb\u7edf\u6df1\u6d45\u8272\u6a21\u5f0f\u5207\u6362<\/span><br \/>\n                supportDarkMode<span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span><br \/>\n              <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n              controller<span class=\"token operator\">:<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>controller<br \/>\n            <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">}<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">height<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">40<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">margin<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n            top<span class=\"token operator\">:<\/span> <span class=\"token number\">56<\/span><br \/>\n          <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>          <span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token function\">Button<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n              type<span class=\"token operator\">:<\/span> ButtonType<span class=\"token punctuation\">.<\/span>Capsule<span class=\"token punctuation\">,<\/span><br \/>\n              stateEffect<span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n              <span class=\"token function\">Text<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;\u5176\u4ed6\u65b9\u5f0f\u767b\u5f55&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontColor<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.color.ohos_id_color_text_primary_activated&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontFamily<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.string.ohos_id_text_font_family_medium&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontWeight<\/span><span class=\"token punctuation\">(<\/span>FontWeight<span class=\"token punctuation\">.<\/span>Medium<span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontSize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.float.ohos_id_text_size_button1&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">.<\/span><span class=\"token function\">focusable<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">true<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">.<\/span><span class=\"token function\">focusOnTouch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">true<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">.<\/span><span class=\"token function\">textOverflow<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> overflow<span class=\"token operator\">:<\/span> TextOverflow<span class=\"token punctuation\">.<\/span>Ellipsis <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">.<\/span><span class=\"token function\">maxLines<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">.<\/span><span class=\"token function\">padding<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> left<span class=\"token operator\">:<\/span> <span class=\"token number\">8<\/span><span class=\"token punctuation\">,<\/span> right<span class=\"token operator\">:<\/span> <span class=\"token number\">8<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><br \/>\n            <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontColor<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.color.ohos_id_color_text_primary_activated&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontFamily<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.string.ohos_id_text_font_family_medium&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontWeight<\/span><span class=\"token punctuation\">(<\/span>FontWeight<span class=\"token punctuation\">.<\/span>Medium<span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">.<\/span><span class=\"token function\">backgroundColor<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.color.ohos_id_color_button_normal&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">.<\/span><span class=\"token function\">focusable<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">true<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">.<\/span><span class=\"token function\">focusOnTouch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">true<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">.<\/span><span class=\"token function\">constraintSize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> minHeight<span class=\"token operator\">:<\/span> <span class=\"token number\">40<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">.<\/span><span class=\"token function\">width<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;100%&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">.<\/span><span class=\"token function\">onClick<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n              hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>domainId<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>logTag<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;click optionalLoginButton.&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">margin<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> top<span class=\"token operator\">:<\/span> <span class=\"token number\">16<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">width<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;100%&#039;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        <span class=\"token function\">Row<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n          <span class=\"token function\">Row<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token function\">Checkbox<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> name<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;privacyCheckbox&#039;<\/span><span class=\"token punctuation\">,<\/span> group<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;privacyCheckboxGroup&#039;<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">width<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">24<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">height<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">24<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">focusable<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">true<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">focusOnTouch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">true<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">margin<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> top<span class=\"token operator\">:<\/span> <span class=\"token number\">0<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">select<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>isSelected<span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">.<\/span><span class=\"token function\">onChange<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>value<span class=\"token operator\">:<\/span> <span class=\"token builtin\">boolean<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>value<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                  <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>isSelected <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                  <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>controller<span class=\"token punctuation\">.<\/span><span class=\"token function\">setAgreementStatus<\/span><span class=\"token punctuation\">(<\/span>loginComponentManager<span class=\"token punctuation\">.<\/span>AgreementStatus<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ACCEPTED<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                  <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>isSelected <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">false<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                  <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>controller<span class=\"token punctuation\">.<\/span><span class=\"token function\">setAgreementStatus<\/span><span class=\"token punctuation\">(<\/span>loginComponentManager<span class=\"token punctuation\">.<\/span>AgreementStatus<span class=\"token punctuation\">.<\/span><span class=\"token constant\">NOT_ACCEPTED<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                <span class=\"token punctuation\">}<\/span><br \/>\n                hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>domainId<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>logTag<span class=\"token punctuation\">,<\/span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">agreementChecked: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>value<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n              <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">}<\/span><\/p>\n<p>          <span class=\"token function\">Row<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token function\">Text<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n              <span class=\"token function\">ForEach<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>privacyText<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>item<span class=\"token operator\">:<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>PrivacyText<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>item<span class=\"token operator\">?.<\/span>type <span class=\"token operator\">&#061;&#061;&#061;<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>TextType<span class=\"token punctuation\">.<\/span><span class=\"token constant\">PLAIN_TEXT<\/span> <span class=\"token operator\">&amp;&amp;<\/span> item<span class=\"token operator\">?.<\/span>text<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                  <span class=\"token function\">Span<\/span><span class=\"token punctuation\">(<\/span>item<span class=\"token operator\">?.<\/span>text<span class=\"token punctuation\">)<\/span><br \/>\n                    <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontColor<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.color.ohos_id_color_text_secondary&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                    <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontFamily<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.string.ohos_id_text_font_family_regular&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                    <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontWeight<\/span><span class=\"token punctuation\">(<\/span>FontWeight<span class=\"token punctuation\">.<\/span>Regular<span class=\"token punctuation\">)<\/span><br \/>\n                    <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontSize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.float.ohos_id_text_size_body3&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>item<span class=\"token operator\">?.<\/span>type <span class=\"token operator\">&#061;&#061;&#061;<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>TextType<span class=\"token punctuation\">.<\/span><span class=\"token constant\">RICH_TEXT<\/span> <span class=\"token operator\">&amp;&amp;<\/span> item<span class=\"token operator\">?.<\/span>text<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                  <span class=\"token function\">Span<\/span><span class=\"token punctuation\">(<\/span>item<span class=\"token operator\">?.<\/span>text<span class=\"token punctuation\">)<\/span><br \/>\n                    <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontColor<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.color.ohos_id_color_text_primary_activated&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                    <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontFamily<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.string.ohos_id_text_font_family_medium&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                    <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontWeight<\/span><span class=\"token punctuation\">(<\/span>FontWeight<span class=\"token punctuation\">.<\/span>Medium<span class=\"token punctuation\">)<\/span><br \/>\n                    <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontSize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.float.ohos_id_text_size_body3&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                    <span class=\"token punctuation\">.<\/span><span class=\"token function\">onClick<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                      <span class=\"token comment\">\/\/ \u5e94\u7528\u9700\u8981\u6839\u636eitem.tag\u5b9e\u73b0\u534f\u8bae\u9875\u9762\u7684\u8df3\u8f6c\u903b\u8f91<\/span><br \/>\n                      hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>domainId<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>logTag<span class=\"token punctuation\">,<\/span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">click privacy text tag: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>item<span class=\"token punctuation\">.<\/span>tag<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                      <span class=\"token comment\">\/\/ \u534e\u4e3a\u8d26\u53f7\u7528\u6237\u8ba4\u8bc1\u534f\u8bae<\/span><br \/>\n                      <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>item<span class=\"token punctuation\">.<\/span>tag <span class=\"token operator\">&#061;&#061;&#061;<\/span> QuickLoginButtonComponent<span class=\"token punctuation\">.<\/span><span class=\"token constant\">USER_AUTHENTICATION_TAG<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                        <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">jumpToPrivacyWebView<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                      <span class=\"token punctuation\">}<\/span><br \/>\n                    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">}<\/span><br \/>\n              <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>item<span class=\"token operator\">:<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>PrivacyText<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> item<span class=\"token punctuation\">.<\/span>text<span class=\"token punctuation\">.<\/span><span class=\"token function\">toString<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><br \/>\n            <span class=\"token punctuation\">.<\/span><span class=\"token function\">width<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;100%&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">}<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">margin<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> left<span class=\"token operator\">:<\/span> <span class=\"token number\">12<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">layoutWeight<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">constraintSize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> minHeight<span class=\"token operator\">:<\/span> <span class=\"token number\">24<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">alignItems<\/span><span class=\"token punctuation\">(<\/span>VerticalAlign<span class=\"token punctuation\">.<\/span>Top<span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">margin<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n          top<span class=\"token operator\">:<\/span> <span class=\"token number\">16<\/span><span class=\"token punctuation\">,<\/span><br \/>\n          bottom<span class=\"token operator\">:<\/span> <span class=\"token number\">16<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><br \/>\n      <span class=\"token punctuation\">.<\/span><span class=\"token function\">justifyContent<\/span><span class=\"token punctuation\">(<\/span>FlexAlign<span class=\"token punctuation\">.<\/span>SpaceBetween<span class=\"token punctuation\">)<\/span><br \/>\n      <span class=\"token punctuation\">.<\/span><span class=\"token function\">constraintSize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> minHeight<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;100%&#039;<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n      <span class=\"token punctuation\">.<\/span><span class=\"token function\">margin<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n        left<span class=\"token operator\">:<\/span> <span class=\"token number\">16<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        right<span class=\"token operator\">:<\/span> <span class=\"token number\">16<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">.<\/span><span class=\"token function\">width<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;100%&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token punctuation\">.<\/span><span class=\"token function\">height<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;100%&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token decorator\"><span class=\"token at operator\">&#064;<\/span><span class=\"token function\">CustomDialog<\/span><\/span><br \/>\n<span class=\"token keyword\">export<\/span> struct AgreementDialog <span class=\"token punctuation\">{<\/span><br \/>\n  logTag<span class=\"token operator\">:<\/span> <span class=\"token builtin\">string<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#039;AgreementDialog&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  domainId<span class=\"token operator\">:<\/span> <span class=\"token builtin\">number<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  dialogController<span class=\"token operator\">?<\/span><span class=\"token operator\">:<\/span> CustomDialogController<span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token function-variable function\">cancel<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token function-variable function\">void<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u7528\u6237\u70b9\u51fb\u201c\u53d6\u6d88\u201d\u6309\u94ae&#xff0c;\u53ef\u4e8e\u6b64\u5904\u8865\u5145\u4e1a\u52a1\u903b\u8f91<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token function-variable function\">confirm<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token function-variable function\">void<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u7528\u6237\u70b9\u51fb\u201c\u540c\u610f\u5e76\u767b\u5f55\u201d\u6309\u94ae&#xff0c;\u53ef\u4e8e\u6b64\u5904\u8865\u5145\u4e1a\u52a1\u903b\u8f91<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token function-variable function\">clickHyperlinkText<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token function-variable function\">void<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u7528\u6237\u70b9\u51fb\u8d85\u94fe\u63a5\u6587\u672c&#xff0c;\u53ef\u4e8e\u6b64\u5904\u8865\u5145\u4e1a\u52a1\u903b\u8f91<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  privacyText<span class=\"token operator\">:<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>PrivacyText<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token constant\">USER_AUTHENTICATION_TAG<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#039;\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u8ba4\u8bc1\u534f\u8bae&#039;<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>  <span class=\"token function\">build<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token function\">Row<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token function\">Text<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;\u7528\u6237\u534f\u8bae\u4e0e\u9690\u79c1\u6761\u6b3e&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">id<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;loginPanel_agreement_dialog_privacy_title&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">maxFontSize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.float.ohos_id_text_size_headline8&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">minFontSize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.float.ohos_id_text_size_body1&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontColor<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.color.ohos_id_color_text_primary&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontFamily<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.string.ohos_id_text_font_family_medium&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontWeight<\/span><span class=\"token punctuation\">(<\/span>FontWeight<span class=\"token punctuation\">.<\/span>Bold<span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">textAlign<\/span><span class=\"token punctuation\">(<\/span>TextAlign<span class=\"token punctuation\">.<\/span>Center<span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">textOverflow<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> overflow<span class=\"token operator\">:<\/span> TextOverflow<span class=\"token punctuation\">.<\/span>Ellipsis <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">maxLines<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><br \/>\n      <span class=\"token punctuation\">.<\/span><span class=\"token function\">alignItems<\/span><span class=\"token punctuation\">(<\/span>VerticalAlign<span class=\"token punctuation\">.<\/span>Center<span class=\"token punctuation\">)<\/span><br \/>\n      <span class=\"token punctuation\">.<\/span><span class=\"token function\">constraintSize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> minHeight<span class=\"token operator\">:<\/span> <span class=\"token number\">56<\/span><span class=\"token punctuation\">,<\/span> maxWidth<span class=\"token operator\">:<\/span> <span class=\"token number\">400<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n      <span class=\"token punctuation\">.<\/span><span class=\"token function\">margin<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n        left<span class=\"token operator\">:<\/span> <span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.float.ohos_id_max_padding_start&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        right<span class=\"token operator\">:<\/span> <span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.float.ohos_id_max_padding_start&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>      <span class=\"token function\">Row<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token function\">Text<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n          <span class=\"token function\">ForEach<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>privacyText<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>item<span class=\"token operator\">:<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>PrivacyText<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>item<span class=\"token operator\">?.<\/span>type <span class=\"token operator\">&#061;&#061;&#061;<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>TextType<span class=\"token punctuation\">.<\/span><span class=\"token constant\">PLAIN_TEXT<\/span> <span class=\"token operator\">&amp;&amp;<\/span> item<span class=\"token operator\">?.<\/span>text<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n              <span class=\"token function\">Span<\/span><span class=\"token punctuation\">(<\/span>item<span class=\"token operator\">?.<\/span>text<span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontSize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.float.ohos_id_text_size_body1&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontColor<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.color.ohos_id_color_text_primary&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontFamily<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.string.ohos_id_text_font_family_regular&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontWeight<\/span><span class=\"token punctuation\">(<\/span>FontWeight<span class=\"token punctuation\">.<\/span>Regular<span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>item<span class=\"token operator\">?.<\/span>type <span class=\"token operator\">&#061;&#061;&#061;<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>TextType<span class=\"token punctuation\">.<\/span><span class=\"token constant\">RICH_TEXT<\/span> <span class=\"token operator\">&amp;&amp;<\/span> item<span class=\"token operator\">?.<\/span>text<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n              <span class=\"token function\">Span<\/span><span class=\"token punctuation\">(<\/span>item<span class=\"token operator\">?.<\/span>text<span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontSize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.float.ohos_id_text_size_body1&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontColor<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;#CE0E2D&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontFamily<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.string.ohos_id_text_font_family_medium&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontWeight<\/span><span class=\"token punctuation\">(<\/span>FontWeight<span class=\"token punctuation\">.<\/span>Medium<span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">.<\/span><span class=\"token function\">onClick<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                  <span class=\"token comment\">\/\/ \u5e94\u7528\u9700\u8981\u6839\u636eitem.tag\u5b9e\u73b0\u534f\u8bae\u9875\u9762\u7684\u8df3\u8f6c\u903b\u8f91<\/span><br \/>\n                  hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>domainId<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>logTag<span class=\"token punctuation\">,<\/span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">click privacy text tag: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>item<span class=\"token punctuation\">.<\/span>tag<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                  <span class=\"token comment\">\/\/ \u534e\u4e3a\u8d26\u53f7\u7528\u6237\u8ba4\u8bc1\u534f\u8bae<\/span><br \/>\n                  <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>item<span class=\"token punctuation\">.<\/span>tag <span class=\"token operator\">&#061;&#061;&#061;<\/span> AgreementDialog<span class=\"token punctuation\">.<\/span><span class=\"token constant\">USER_AUTHENTICATION_TAG<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                    hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>domainId<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>logTag<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;AgreementDialog click.&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                    <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">clickHyperlinkText<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                  <span class=\"token punctuation\">}<\/span><br \/>\n                <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><br \/>\n          <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>item<span class=\"token operator\">:<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>PrivacyText<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> item<span class=\"token punctuation\">.<\/span>text<span class=\"token punctuation\">.<\/span><span class=\"token function\">toString<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">width<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;100%&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">textOverflow<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> overflow<span class=\"token operator\">:<\/span> TextOverflow<span class=\"token punctuation\">.<\/span>Ellipsis <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">maxLines<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">10<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">textAlign<\/span><span class=\"token punctuation\">(<\/span>TextAlign<span class=\"token punctuation\">.<\/span>Start<span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">focusable<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">true<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">focusOnTouch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">true<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">padding<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> left<span class=\"token operator\">:<\/span> <span class=\"token number\">24<\/span><span class=\"token punctuation\">,<\/span> right<span class=\"token operator\">:<\/span> <span class=\"token number\">24<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">width<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;100%&#039;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>      <span class=\"token function\">Flex<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n        direction<span class=\"token operator\">:<\/span> FlexDirection<span class=\"token punctuation\">.<\/span>Row<br \/>\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token function\">Button<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;\u53d6\u6d88&#039;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n          <span class=\"token punctuation\">{<\/span> type<span class=\"token operator\">:<\/span> ButtonType<span class=\"token punctuation\">.<\/span>Capsule<span class=\"token punctuation\">,<\/span> stateEffect<span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">id<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;loginPanel_agreement_cancel_btn&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontColor<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.color.ohos_id_color_text_primary&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontSize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.float.ohos_id_text_size_button1&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontFamily<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.string.ohos_id_text_font_family_medium&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">backgroundColor<\/span><span class=\"token punctuation\">(<\/span>Color<span class=\"token punctuation\">.<\/span>Transparent<span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontWeight<\/span><span class=\"token punctuation\">(<\/span>FontWeight<span class=\"token punctuation\">.<\/span>Medium<span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">focusable<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">true<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">focusOnTouch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">true<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">constraintSize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> minHeight<span class=\"token operator\">:<\/span> <span class=\"token number\">40<\/span><span class=\"token punctuation\">,<\/span> maxWidth<span class=\"token operator\">:<\/span> <span class=\"token number\">400<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">width<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;50%&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">onClick<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>domainId<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>logTag<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;AgreementDialog cancel.&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">cancel<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n          <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        <span class=\"token function\">Button<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;\u540c\u610f\u5e76\u767b\u5f55&#039;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n          <span class=\"token punctuation\">{<\/span> type<span class=\"token operator\">:<\/span> ButtonType<span class=\"token punctuation\">.<\/span>Capsule<span class=\"token punctuation\">,<\/span> stateEffect<span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">id<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;loginPanel_agreement_dialog_huawei_id_login_btn&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontColor<\/span><span class=\"token punctuation\">(<\/span>Color<span class=\"token punctuation\">.<\/span>White<span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">backgroundColor<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;#CE0E2D&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontSize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.float.ohos_id_text_size_button1&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontFamily<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.string.ohos_id_text_font_family_medium&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">fontWeight<\/span><span class=\"token punctuation\">(<\/span>FontWeight<span class=\"token punctuation\">.<\/span>Medium<span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">focusable<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">true<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">focusOnTouch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">true<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">constraintSize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> minHeight<span class=\"token operator\">:<\/span> <span class=\"token number\">40<\/span><span class=\"token punctuation\">,<\/span> maxWidth<span class=\"token operator\">:<\/span> <span class=\"token number\">400<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">width<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;50%&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n          <span class=\"token punctuation\">.<\/span><span class=\"token function\">onClick<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>domainId<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>logTag<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;AgreementDialog confirm.&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">confirm<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n          <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><br \/>\n      <span class=\"token punctuation\">.<\/span><span class=\"token function\">margin<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n        top<span class=\"token operator\">:<\/span> <span class=\"token number\">8<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        left<span class=\"token operator\">:<\/span> <span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.float.ohos_id_elements_margin_horizontal_l&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        right<span class=\"token operator\">:<\/span> <span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.float.ohos_id_elements_margin_horizontal_l&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        bottom<span class=\"token operator\">:<\/span> <span class=\"token number\">16<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">backgroundColor<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.color.ohos_id_color_dialog_default_bg&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token punctuation\">.<\/span><span class=\"token function\">padding<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n      left<span class=\"token operator\">:<\/span> <span class=\"token number\">16<\/span><span class=\"token punctuation\">,<\/span><br \/>\n      right<span class=\"token operator\">:<\/span> <span class=\"token number\">16<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">export<\/span> <span class=\"token keyword\">enum<\/span> ErrorCode <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u8d26\u53f7\u672a\u767b\u5f55<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_LOGIN_OUT<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001502001<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u8be5\u8d26\u53f7\u4e0d\u652f\u6301\u4e00\u952e\u767b\u5f55&#xff0c;\u5982\u6d77\u5916\u8d26\u53f7<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_NOT_SUPPORTED<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001500003<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u7f51\u7edc\u9519\u8bef<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_NETWORK_ERROR<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001502005<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u5185\u90e8\u9519\u8bef<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_INTERNAL_ERROR<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001502009<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u7528\u6237\u53d6\u6d88\u6388\u6743<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_USER_CANCEL<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001502012<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u7cfb\u7edf\u670d\u52a1\u5f02\u5e38<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_SYSTEM_SERVICE<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">12300001<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u7528\u6237\u672a\u540c\u610f\u7528\u6237\u534f\u8bae<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_AGREEMENT_STATUS_NOT_ACCEPTED<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1005300001<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u53c2\u6570\u9519\u8bef<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_PARAMETER_ERROR<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">401<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u91cd\u590d\u8bf7\u6c42<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_REQUEST_REFUSE<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001500002<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u4ee5\u4e0b\u662f\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u8ba4\u8bc1\u534f\u8bae\u5c55\u793a\u9875\u793a\u4f8b\u4ee3\u7801&#xff1a;<\/p>\n<p><span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> webview <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.ArkWeb&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> hilog <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.PerformanceAnalysisKit&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> BusinessError <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.BasicServicesKit&#039;<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u534e\u4e3a\u8d26\u53f7\u7528\u6237\u8ba4\u8bc1\u534f\u8bae\u5c55\u793a\u9875<\/span><br \/>\n<span class=\"token decorator\"><span class=\"token at operator\">&#064;<\/span><span class=\"token function\">Entry<\/span><\/span><br \/>\n<span class=\"token decorator\"><span class=\"token at operator\">&#064;<\/span><span class=\"token function\">Component<\/span><\/span><br \/>\nstruct WebPage <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token decorator\"><span class=\"token at operator\">&#064;<\/span><span class=\"token function\">State<\/span><\/span> webUrl<span class=\"token operator\">?<\/span><span class=\"token operator\">:<\/span> <span class=\"token builtin\">string<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#039;&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token decorator\"><span class=\"token at operator\">&#064;<\/span><span class=\"token function\">State<\/span><\/span> progress<span class=\"token operator\">:<\/span> <span class=\"token builtin\">number<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  logTag<span class=\"token operator\">:<\/span> <span class=\"token builtin\">string<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#039;WebPage&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  domainId<span class=\"token operator\">:<\/span> <span class=\"token builtin\">number<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  controller<span class=\"token operator\">:<\/span> webview<span class=\"token punctuation\">.<\/span>WebviewController <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">webview<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">WebviewController<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>  <span class=\"token function\">build<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token function\">Button<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> type<span class=\"token operator\">:<\/span> ButtonType<span class=\"token punctuation\">.<\/span>Normal <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n          <span class=\"token function\">Image<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.media.ohos_ic_compnent_titlebar_back&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">.<\/span><span class=\"token function\">backgroundColor<\/span><span class=\"token punctuation\">(<\/span>Color<span class=\"token punctuation\">.<\/span>Transparent<span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">.<\/span><span class=\"token function\">borderRadius<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">20<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">.<\/span><span class=\"token function\">width<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">24<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">.<\/span><span class=\"token function\">height<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">24<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">.<\/span><span class=\"token function\">draggable<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">false<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">.<\/span><span class=\"token function\">autoResize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">false<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">.<\/span><span class=\"token function\">focusable<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">true<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">.<\/span><span class=\"token function\">fillColor<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.color.ohos_id_color_titlebar_icon&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token punctuation\">.<\/span><span class=\"token function\">matchTextDirection<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">true<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">alignSelf<\/span><span class=\"token punctuation\">(<\/span>ItemAlign<span class=\"token punctuation\">.<\/span>Start<span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">backgroundColor<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">$r<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;sys.color.ohos_id_color_button_normal&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">borderRadius<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">20<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">width<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">40<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">height<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">40<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">onClick<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n          <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getUIContext<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getRouter<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">back<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><br \/>\n      <span class=\"token punctuation\">.<\/span><span class=\"token function\">height<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">56<\/span><span class=\"token punctuation\">)<\/span><br \/>\n      <span class=\"token punctuation\">.<\/span><span class=\"token function\">width<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;100%&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n      <span class=\"token punctuation\">.<\/span><span class=\"token function\">justifyContent<\/span><span class=\"token punctuation\">(<\/span>FlexAlign<span class=\"token punctuation\">.<\/span>Center<span class=\"token punctuation\">)<\/span><br \/>\n      <span class=\"token punctuation\">.<\/span><span class=\"token function\">margin<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n        top<span class=\"token operator\">:<\/span> <span class=\"token number\">36<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        left<span class=\"token operator\">:<\/span> <span class=\"token number\">16<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>      <span class=\"token function\">Progress<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> value<span class=\"token operator\">:<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>progress<span class=\"token punctuation\">,<\/span> type<span class=\"token operator\">:<\/span> ProgressType<span class=\"token punctuation\">.<\/span>Linear <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">width<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;100%&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">visibility<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>progress <span class=\"token operator\">&lt;&#061;<\/span> <span class=\"token number\">99<\/span> <span class=\"token operator\">?<\/span> Visibility<span class=\"token punctuation\">.<\/span>Visible <span class=\"token operator\">:<\/span> Visibility<span class=\"token punctuation\">.<\/span>None<span class=\"token punctuation\">)<\/span><\/p>\n<p>      <span class=\"token function\">Web<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> src<span class=\"token operator\">:<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>webUrl <span class=\"token operator\">??<\/span> <span class=\"token string\">&#039;&#039;<\/span><span class=\"token punctuation\">,<\/span> controller<span class=\"token operator\">:<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>controller <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">backgroundColor<\/span><span class=\"token punctuation\">(<\/span>Color<span class=\"token punctuation\">.<\/span>Transparent<span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">margin<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> bottom<span class=\"token operator\">:<\/span> <span class=\"token number\">60<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">onProgressChange<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>event<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n          hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>domainId<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>logTag<span class=\"token punctuation\">,<\/span><br \/>\n            <span class=\"token string\">&#039;onProgressChange: &#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>event <span class=\"token operator\">?<\/span> event<span class=\"token punctuation\">.<\/span>newProgress <span class=\"token operator\">:<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n          <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>progress <span class=\"token operator\">&#061;<\/span> event <span class=\"token operator\">?<\/span> event<span class=\"token punctuation\">.<\/span>newProgress <span class=\"token operator\">:<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">darkMode<\/span><span class=\"token punctuation\">(<\/span>WebDarkMode<span class=\"token punctuation\">.<\/span>Auto<span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">forceDarkAccess<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">true<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">onLoadIntercept<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n          hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>domainId<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>logTag<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;onLoadIntercept&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n          <span class=\"token keyword\">return<\/span> <span class=\"token boolean\">false<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">onErrorReceive<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>event<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n          <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>event<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>domainId<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>logTag<span class=\"token punctuation\">,<\/span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">onErrorReceive,errorInfo: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>event<span class=\"token operator\">?.<\/span>error<span class=\"token operator\">?.<\/span><span class=\"token function\">getErrorInfo<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n          <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">.<\/span><span class=\"token function\">alignItems<\/span><span class=\"token punctuation\">(<\/span>HorizontalAlign<span class=\"token punctuation\">.<\/span>Start<span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token punctuation\">.<\/span><span class=\"token function\">padding<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> left<span class=\"token operator\">:<\/span> <span class=\"token number\">12<\/span><span class=\"token punctuation\">,<\/span> right<span class=\"token operator\">:<\/span> <span class=\"token number\">12<\/span><span class=\"token punctuation\">,<\/span> bottom<span class=\"token operator\">:<\/span> <span class=\"token number\">60<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token punctuation\">.<\/span><span class=\"token function\">width<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;100%&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token punctuation\">.<\/span><span class=\"token function\">height<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;100%&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><\/p>\n<p>  <span class=\"token function\">aboutToAppear<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token operator\">:<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;testTag&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;aboutToAppear&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> params <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getUIContext<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getRouter<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getParams<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> Record<span class=\"token operator\">&lt;<\/span><span class=\"token builtin\">string<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token builtin\">string<\/span><span class=\"token operator\">&gt;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>webUrl <span class=\"token operator\">&#061;<\/span> params<span class=\"token punctuation\">.<\/span>url <span class=\"token operator\">??<\/span> <span class=\"token string\">&#039;&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;testTag&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">webUrl: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>webUrl<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><\/p>\n<p>  <span class=\"token function\">aboutToDisappear<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token operator\">:<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;testTag&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;aboutToDisappear&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>webUrl<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>controller<span class=\"token punctuation\">.<\/span><span class=\"token function\">stop<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n          <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">catch<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;testTag&#039;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n              <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">ErrorCode: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span><span class=\"token punctuation\">(<\/span>error <span class=\"token keyword\">as<\/span> BusinessError<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>code<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token string\">,  Message: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span><span class=\"token punctuation\">(<\/span>error <span class=\"token keyword\">as<\/span> BusinessError<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>message<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<h6>\u7528\u6237\u975e\u9996\u6b21\u767b\u5f55\u5e94\u7528&#xff08;\u53ef\u9009&#xff09;<\/h6>\n<p>\u7528\u6237\u975e\u9996\u6b21\u767b\u5f55\u5e94\u7528\u6d41\u7a0b\u8bf7\u53c2\u8003\u9996\u6b21\u767b\u5f55\u5e94\u7528\u5f00\u53d1\u6d41\u7a0b\u4e2d\u7684\u5bfc\u5165\u6a21\u5757\u53ca\u83b7\u53d6\u533f\u540d\u624b\u673a\u53f7&#xff0c;\u83b7\u53d6AuthorizationWithHuaweiIDResponse\u54cd\u5e94\u7ed3\u679c\u4e2d\u7684Authorization Code\u3002\u53ef\u80fd\u5b58\u5728\u7684\u5f02\u5e38\u573a\u666f\u53ca\u5904\u7406\u65b9\u6cd5&#xff0c;\u53ef\u53c2\u8003\u88681 \u83b7\u53d6\u533f\u540d\u624b\u673a\u53f7\u9519\u8bef\u7801\u5904\u7406\u3002<\/p>\n<p>\u6b63\u786e\u83b7\u53d6\u5230Authorization Code&#xff0c;\u5f00\u53d1\u8005\u53ef\u5c06Authorization Code\u4f20\u7ed9\u5e94\u7528\u670d\u52a1\u7aef\u7528\u4e8e\u83b7\u53d6\u7528\u6237\u8eab\u4efd\u6807\u8bc6&#xff08;UnionID\u3001OpenID&#xff09;&#xff0c;\u5373\u53ef\u67e5\u8be2\u8be5\u7528\u6237\u662f\u5426\u5df2\u5173\u8054\u3002<\/p>\n<p>1&#xff09;\u5982\u5df2\u5173\u8054&#xff0c;\u7ed3\u5408\u98ce\u63a7\u3001\u5b89\u5168\u56e0\u7d20\u53ca\u81ea\u8eab\u4e1a\u52a1\u573a\u666f\u5224\u65ad&#xff0c;\u53ef\u5c55\u793a\u5df2\u5173\u8054\u7684\u8d26\u53f7&#xff0c;\u7531\u7528\u6237\u9009\u62e9\u662f\u5426\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u5e94\u7528&#xff0c;\u6216\u514d\u7528\u6237\u64cd\u4f5c&#xff0c;\u9759\u9ed8\u767b\u5f55\u5e94\u7528&#xff0c;\u5ba2\u6237\u7aef\u5f00\u53d1\u7ed3\u675f\u3002<\/p>\n<p>2&#xff09;\u5982\u672a\u5173\u8054&#xff0c;\u5219\u53c2\u8003\u9996\u6b21\u767b\u5f55\u5e94\u7528\u5f00\u53d1\u6d41\u7a0b\u4e2d\u7684\u5c55\u793a\u4e00\u952e\u767b\u5f55\u9875\u9762\u5e76\u83b7\u53d6Authorization Code\u7ee7\u7eed\u5f00\u53d1\u3002<\/p>\n<h6>\u501f\u52a9DevEco Studio\u8f85\u52a9\u5f00\u53d1&#xff08;\u53ef\u9009&#xff09;<\/h6>\n<p>\u6253\u5f00\u9700\u8981\u63d0\u4f9b\u4e00\u952e\u767b\u5f55\u529f\u80fd\u7684\u9875\u9762&#xff0c;\u5728\u9875\u9762\u7684build()\u4e2d\u521b\u5efa\u4e00\u4e2a\u5bb9\u5668&#xff08;\u5982Column&#xff09;\u3002<\/p>\n<p>\u5728DevEco Studio\u83dc\u5355\u680f\u70b9\u51fbView &gt; Tool Windows &gt; Kit Assistant&#xff0c;\u6216\u4f7f\u7528\u5feb\u6377\u952eAlt &#043; K&#xff0c;\u8fdb\u5165Kit Assistant\u9875\u9762\u3002<\/p>\n<p>\u5728\u5de6\u4fa7\u76ee\u5f55\u4e2d\u70b9\u51fb\u9009\u4e2dAccountKit &gt; QuickLoginButton&#xff0c;\u5e76\u62d6\u62fd\u81f3\u65b0\u521b\u5efa\u7684\u5bb9\u5668\u4e2d\u3002\u5373\u53ef\u5728\u5f53\u524d\u4f4d\u7f6e\u63d2\u5165\u76f8\u5e94\u7684\u4ee3\u7801\u7247\u6bb5\u3002<\/p>\n<p>\u82e5\u4ee3\u7801\u7247\u6bb5\u63d2\u5165\u5931\u8d25&#xff0c;\u53ef\u67e5\u8be2\u5feb\u901f\u63d2\u5165\u573a\u666f\u5316\u4ee3\u7801\u7247\u6bb5\u7684\u8bf4\u660e\u6392\u67e5\u539f\u56e0\u3002<\/p>\n<p>\u5728\u81ea\u52a8\u751f\u6210\u7684\u4ee3\u7801\u6bb5\u7684getQuickLoginAnonymousPhone\u51fd\u6570\u4e2d&#xff0c;\u6267\u884cexecuteRequest\u51fd\u6570\u53ef\u83b7\u53d6\u54cd\u5e94\u7ed3\u679c\u3002<\/p>\n<p>\u6839\u636e\u83b7\u53d6\u7684\u54cd\u5e94\u7ed3\u679c\u5224\u65ad&#xff0c;\u53ef\u80fd\u5b58\u5728\u4ee5\u4e0b\u573a\u666f&#xff1a;<\/p>\n<p>\u5df2\u6b63\u786e\u83b7\u53d6\u5230\u7528\u6237\u533f\u540d\u624b\u673a\u53f7\u53caAuthorization Code&#xff0c;\u5f00\u53d1\u8005\u53ef\u5c06Authorization Code\u4f20\u7ed9\u5e94\u7528\u670d\u52a1\u7aef\u7528\u4e8e\u83b7\u53d6\u7528\u6237\u8eab\u4efd\u6807\u8bc6&#xff08;UnionID\u3001OpenID&#xff09;&#xff0c;\u5373\u53ef\u67e5\u8be2\u8be5\u7528\u6237\u662f\u5426\u5df2\u5173\u8054\u3002<\/p>\n<p>1&#xff09;\u5982\u5df2\u5173\u8054&#xff0c;\u7ed3\u5408\u98ce\u63a7\u3001\u5b89\u5168\u56e0\u7d20\u53ca\u81ea\u8eab\u4e1a\u52a1\u573a\u666f\u5224\u65ad&#xff0c;\u53ef\u5c55\u793a\u5df2\u5173\u8054\u7684\u8d26\u53f7&#xff0c;\u7531\u7528\u6237\u9009\u62e9\u662f\u5426\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u5e94\u7528&#xff0c;\u6216\u514d\u7528\u6237\u64cd\u4f5c&#xff0c;\u9759\u9ed8\u767b\u5f55\u5e94\u7528&#xff0c;\u5ba2\u6237\u7aef\u5f00\u53d1\u7ed3\u675f\u3002<\/p>\n<p>2&#xff09;\u5982\u672a\u5173\u8054&#xff0c;\u518d\u5224\u65ad\u662f\u5426\u5b58\u5728\u4e0b\u9762\u7684\u5f02\u5e38\u573a\u666f&#xff0c;\u5982\u65e0&#xff0c;\u5219\u53c2\u8003\u4e0b\u9762\u6b65\u9aa45\u7ee7\u7eed\u5f00\u53d1\u3002<\/p>\n<p>\u5b58\u5728\u5982\u4e0b\u5f02\u5e38\u573a\u666f&#xff1a;<\/p>\n<p>1&#xff09;\u8fd4\u56de1001502001 \u7528\u6237\u672a\u767b\u5f55\u534e\u4e3a\u8d26\u53f7\u9519\u8bef\u7801&#xff0c;\u8bf4\u660e\u534e\u4e3a\u8d26\u53f7\u672a\u767b\u5f55\u3002<\/p>\n<p>2&#xff09;\u8fd4\u56de1001500003 \u4e0d\u652f\u6301\u8be5scopes\u6216permissions\u9519\u8bef\u7801&#xff0c;\u8bf4\u660e\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u6ce8\u518c\u5730\u4e3a\u4e2d\u56fd\u5883\u5916\u3001\u9999\u6e2f\u7279\u522b\u884c\u653f\u533a\u3001\u6fb3\u95e8\u7279\u522b\u884c\u653f\u533a\u6216\u4e2d\u56fd\u53f0\u6e7e\u3002<\/p>\n<p>3&#xff09;\u83b7\u53d6\u5230\u7684\u533f\u540d\u624b\u673a\u53f7\u4e3a\u7a7a&#xff0c;\u8bf4\u660e\u534e\u4e3a\u8d26\u53f7\u6ca1\u6709\u7ed1\u5b9a\u624b\u673a\u53f7\u3001\u6743\u9650\u672a\u7533\u8bf7\u6216\u672a\u751f\u6548\u3002<\/p>\n<p>\u4e0a\u8ff0\u5f02\u5e38\u573a\u666f\u5e94\u7528\u9700\u8981\u5c55\u793a\u5176\u4ed6\u767b\u5f55\u65b9\u5f0f\u3002<\/p>\n<p>\u6839\u636e\u4e0a\u8ff0\u4ee3\u7801\u5b9e\u73b0\u5e94\u7528\u7684\u767b\u5f55\u9875\u9762&#xff0c;\u5e76\u5c55\u793a\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u6309\u94ae\u548c\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u8ba4\u8bc1\u534f\u8bae&#xff08;Account Kit\u63d0\u4f9b\u8df3\u8f6c\u94fe\u63a5&#xff0c;\u5e94\u7528\u9700\u5b9e\u73b0\u534f\u8bae\u8df3\u8f6c&#xff0c;\u53c2\u89c1\u7ea6\u675f\u4e0e\u9650\u5236\u7b2c2\u70b9&#xff09;&#xff0c;\u7528\u6237\u540c\u610f\u534f\u8bae\u5e76\u70b9\u51fb\u4e00\u952e\u767b\u5f55\u6309\u94ae\u540e&#xff0c;\u53ef\u83b7\u53d6\u5230Authorization Code&#xff0c;\u5c06\u8be5\u503c\u4f20\u7ed9\u5e94\u7528\u670d\u52a1\u7aef\u7528\u4e8e\u83b7\u53d6\u7528\u6237\u4fe1\u606f&#xff08;\u5b8c\u6574\u624b\u673a\u53f7\u3001UnionID\u3001OpenID&#xff09;\u3002<\/p>\n<h5>\u670d\u52a1\u7aef\u5f00\u53d1<\/h5>\n<p>\u5e94\u7528\u670d\u52a1\u7aef\u4f7f\u7528Client ID\u3001Client Secret\u3001Authorization Code\u8c03\u7528\/oauth2\/v6\/quickLogin\/getPhoneNumber\u63a5\u53e3\u83b7\u53d6\u5b8c\u6574\u624b\u673a\u53f7\u548c\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u6807\u8bc6UnionID\u3002<\/p>\n<p>\u5e94\u7528\u901a\u8fc7\u83b7\u53d6\u5230\u7684\u5b8c\u6574\u624b\u673a\u53f7\u6216UnionID\u67e5\u8be2\u8be5\u7528\u6237\u662f\u5426\u5df2\u5173\u8054\u5e94\u7528\u7cfb\u7edf\u6570\u636e\u5e93\u3002\u5982\u5df2\u5173\u8054&#xff0c;\u5219\u7ed1\u5b9a\u83b7\u53d6\u7684UnionID\u4e0e\u624b\u673a\u53f7\u5230\u5df2\u6709\u7528\u6237\u4e0a&#xff08;\u5982\u5df2\u7ed1\u5b9a&#xff0c;\u5219\u53ef\u5ffd\u7565&#xff09;&#xff0c;\u5b8c\u6210\u7528\u6237\u767b\u5f55&#xff1b;\u5982\u672a\u5173\u8054&#xff0c;\u5219\u521b\u5efa\u65b0\u7528\u6237\u5e76\u7ed1\u5b9a\u624b\u673a\u53f7\u4e0eUnionID\u5230\u8be5\u7528\u6237\u4e0a\u3002<\/p>\n<h5>\u5ba2\u6237\u7aef\u4e0e\u670d\u52a1\u7aef\u4ea4\u4e92\u5f00\u53d1<\/h5>\n<h6>\u5e94\u7528\u5ba2\u6237\u7aef\u5230\u5e94\u7528\u670d\u52a1\u7aef\u7684\u5f00\u53d1<\/h6>\n<p>\u4e1a\u52a1\u6d41\u7a0b&#xff1a;<\/p>\n<p>\u51c6\u5907&#xff1a;<\/p>\n<p>\u8bf7\u5148\u5b8c\u6210\u5e94\u7528\u5ba2\u6237\u7aef\u4e00\u952e\u767b\u5f55\u7684\u76f8\u5173\u5f00\u53d1&#xff0c;\u76f8\u5173\u5f00\u53d1\u6307\u5bfc\u53c2\u8003\u5ba2\u6237\u7aef\u5f00\u53d1\u3002<\/p>\n<p>\u53c2\u8003\u4f7f\u7528fetch\u53d1\u9001\u7f51\u7edc\u8bf7\u6c42\u5b8c\u6210\u5ba2\u6237\u7aef\u5230\u670d\u52a1\u7aef\u7684\u63a5\u53e3\u8bf7\u6c42&#xff0c;\u5f00\u53d1\u6b65\u9aa4\u5982\u4e0b&#xff1a;<\/p>\n<p>\u5728\u5e94\u7528\u5ba2\u6237\u7aef\u8c03\u7528\u5e94\u7528\u670d\u52a1\u7aef\u63d0\u4f9b\u7684\u63a5\u53e3&#xff0c;\u5c06Authorization Code\u4f20\u8f93\u7ed9\u5e94\u7528\u7684\u670d\u52a1\u7aef\u3002<\/p>\n<p>\u6ce8\u610f<\/p>\n<p>\u5e94\u7528\u5ba2\u6237\u7aef\u4e0e\u5e94\u7528\u670d\u52a1\u7aef\u7684\u4ea4\u4e92\u5b89\u5168\u9700\u8981\u5e94\u7528\u81ea\u884c\u4fdd\u8bc1\u3002<\/p>\n<p><span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> rcp <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.RemoteCommunicationKit&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> hilog <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.PerformanceAnalysisKit&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> util <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.ArkTS&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> BusinessError <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.BasicServicesKit&#039;<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u5ba2\u6237\u7aef\u8bf7\u6c42\u63a5\u53e3\u793a\u4f8b\u4ee3\u7801<\/span><br \/>\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">function<\/span> <span class=\"token function\">rcpRequest<\/span><span class=\"token punctuation\">(<\/span>authCode<span class=\"token operator\">:<\/span> <span class=\"token builtin\">string<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u5b9a\u4e49\u8bf7\u6c42\u5934<\/span><br \/>\n  <span class=\"token keyword\">const<\/span> headers<span class=\"token operator\">:<\/span> rcp<span class=\"token punctuation\">.<\/span>RequestHeaders <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token string-property property\">&#039;accept&#039;<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;application\/json&#039;<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u5b9a\u4e49\u8981\u4f20\u9012\u7684\u53c2\u6570<\/span><br \/>\n  <span class=\"token keyword\">const<\/span> postMessage<span class=\"token operator\">:<\/span> Record<span class=\"token operator\">&lt;<\/span><span class=\"token builtin\">string<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token builtin\">string<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token string-property property\">&#039;authorizationCode&#039;<\/span><span class=\"token operator\">:<\/span> authCode<br \/>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token keyword\">const<\/span> securityConfig<span class=\"token operator\">:<\/span> rcp<span class=\"token punctuation\">.<\/span>SecurityConfiguration <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    tlsOptions<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      tlsVersion<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;TlsV1.3&#039;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u5047\u8bbe&#034;http:\/\/localhost:8080&#034;\u4e3a\u5e94\u7528\u670d\u52a1\u7aef\u5730\u5740<\/span><br \/>\n  <span class=\"token keyword\">const<\/span> baseUrl <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#039;http:\/\/localhost:8080\/login&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u5b9a\u4e49\u8bf7\u6c42\u5bf9\u8c61<\/span><br \/>\n  <span class=\"token keyword\">const<\/span> req <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">rcp<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">Request<\/span><span class=\"token punctuation\">(<\/span>baseUrl<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;POST&#039;<\/span><span class=\"token punctuation\">,<\/span> headers<span class=\"token punctuation\">,<\/span> postMessage<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u521b\u5efa\u901a\u4fe1\u4f1a\u8bdd\u5bf9\u8c61<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> session <span class=\"token operator\">&#061;<\/span> rcp<span class=\"token punctuation\">.<\/span><span class=\"token function\">createSession<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> requestConfiguration<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span> security<span class=\"token operator\">:<\/span> securityConfig <span class=\"token punctuation\">}<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u53d1\u8d77\u8bf7\u6c42<\/span><br \/>\n    session<span class=\"token punctuation\">.<\/span><span class=\"token function\">fetch<\/span><span class=\"token punctuation\">(<\/span>req<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">then<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>response<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;getRcpResult&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;Succeeded in getting result from server.&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>response<span class=\"token punctuation\">.<\/span>body<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">const<\/span> decoder <span class=\"token operator\">&#061;<\/span> util<span class=\"token punctuation\">.<\/span>TextDecoder<span class=\"token punctuation\">.<\/span><span class=\"token function\">create<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;utf-8&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">const<\/span> result <span class=\"token operator\">&#061;<\/span> <span class=\"token constant\">JSON<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">parse<\/span><span class=\"token punctuation\">(<\/span>decoder<span class=\"token punctuation\">.<\/span><span class=\"token function\">decodeToString<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Uint8Array<\/span><span class=\"token punctuation\">(<\/span>response<span class=\"token punctuation\">.<\/span>body<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> Record<span class=\"token operator\">&lt;<\/span><span class=\"token builtin\">string<\/span><span class=\"token punctuation\">,<\/span> Object<span class=\"token operator\">&gt;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u6b64\u4e3a\u4ee3\u7801\u793a\u4f8b&#xff0c;\u5177\u4f53\u5b9e\u73b0\u8bf7\u4ee5\u4e1a\u52a1\u670d\u52a1\u7aef\u5b9e\u9645\u8fd4\u56de\u6570\u636e\u7ed3\u6784\u4e3a\u51c6<\/span><br \/>\n        <span class=\"token keyword\">const<\/span> phoneNumber<span class=\"token operator\">:<\/span> <span class=\"token builtin\">string<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token constant\">JSON<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">stringify<\/span><span class=\"token punctuation\">(<\/span>result<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;phone&#039;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">??<\/span> <span class=\"token string\">&#039;&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>phoneNumber<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n          <span class=\"token comment\">\/\/ \u5e94\u7528\u5904\u7406\u76f8\u5173\u903b\u8f91<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;getRcpResult&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;Failed to get response body.&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">catch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>err<span class=\"token operator\">:<\/span> BusinessError<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;getRcpResult&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">err: err code is <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>err<span class=\"token punctuation\">.<\/span>code<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token string\">, err message is <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span><span class=\"token constant\">JSON<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">stringify<\/span><span class=\"token punctuation\">(<\/span>err<span class=\"token punctuation\">)<\/span><span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">catch<\/span> <span class=\"token punctuation\">(<\/span>err<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;getRcpResult&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">err: err code is <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>err<span class=\"token punctuation\">.<\/span>code<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token string\">, err message is <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span><span class=\"token constant\">JSON<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">stringify<\/span><span class=\"token punctuation\">(<\/span>err<span class=\"token punctuation\">)<\/span><span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u5e94\u7528\u670d\u52a1\u7aef\u63d0\u4f9b\u63a5\u53e3\u7528\u4e8e\u63a5\u6536\u5e94\u7528\u5ba2\u6237\u7aef\u83b7\u53d6\u5230\u7684Authorization Code\u3002<\/p>\n<p>\u5e94\u7528\u670d\u52a1\u7aef\u83b7\u53d6\u5230Authorization Code\u4e4b\u540e&#xff0c;\u5bf9\u63a5\u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u5668&#xff0c;\u53ef\u4ee5\u53c2\u8003\u670d\u52a1\u7aef\u5f00\u53d1&#xff0c;\u8c03\u7528\/oauth2\/v6\/quickLogin\/getPhoneNumber\u63a5\u53e3\u83b7\u53d6\u5b8c\u6574\u624b\u673a\u53f7\u3001UnionID\u3001OpenID&#xff0c;\u540c\u65f6\u4e5f\u53ef\u4ee5\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u670d\u52a1\u7aefSkill\u6765\u8fdb\u884c\u4ee3\u7801\u5f00\u53d1&#xff0c;Skill\u4f7f\u7528\u65b9\u5f0f\u8be6\u89c1Account Kit Skill\u80fd\u529b\u5f00\u653e\u3002<\/p>\n<p>\u6839\u636e\u83b7\u53d6\u7684UnionID\u3001OpenID\u3001\u5b8c\u6574\u624b\u673a\u53f7&#xff0c;\u5224\u65ad\u767b\u5f55\u7528\u6237\u662f\u5426\u4e3a\u65b0\u7528\u6237\u3001\u662f\u5426\u5df2\u5173\u8054\u7b49\u7b49&#xff08;\u6839\u636e\u5b9e\u9645\u4e1a\u52a1\u5f00\u53d1&#xff09;\u3002<\/p>\n<p>\u4fdd\u5b58\u6216\u66f4\u65b0\u7528\u6237\u4fe1\u606f\u5230\u5e94\u7528\u670d\u52a1\u7aef&#xff0c;\u5b8c\u6210\u5904\u7406\u540e&#xff0c;\u8fd4\u56de\u767b\u5f55\u7528\u6237\u7684\u4fe1\u606f\u81f3\u5e94\u7528\u5ba2\u6237\u7aef\u3002<\/p>\n<h6>\u5ba2\u6237\u7aef\u4e0e\u670d\u52a1\u7aef\u8054\u8c03<\/h6>\n<p>\u524d\u63d0&#xff1a;\u6839\u636e\u5e94\u7528\u767b\u5f55\u65b9\u6848\u8bbe\u8ba1\u53ca\u5b9e\u73b0&#xff0c;\u5b8c\u6210\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u7aef\u5f00\u53d1&#xff0c;\u5f00\u53d1\u6307\u5bfc\u53c2\u89c1\u5ba2\u6237\u7aef\u5f00\u53d1\u3001\u670d\u52a1\u7aef\u5f00\u53d1\u548c\u5e94\u7528\u5ba2\u6237\u7aef\u5230\u5e94\u7528\u670d\u52a1\u7aef\u7684\u5f00\u53d1\u3002<\/p>\n<p>\u5728\u5ba2\u6237\u7aef\u83b7\u53d6\u5230Authorization Code\u4e4b\u540e&#xff0c;\u4f20\u9001\u7ed9\u670d\u52a1\u7aef\u63a5\u53e3&#xff1b;\u5728\u670d\u52a1\u7aef\u4f7f\u7528Authorization Code\u83b7\u53d6\u534e\u4e3a\u8d26\u53f7\u7ed1\u5b9a\u7684\u624b\u673a\u53f7\u3001UnionID\u3001OpenID\u3002<\/p>\n<p>\u6839\u636e\u5e94\u7528\u767b\u5f55\u65b9\u6848\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u7ed1\u5b9a\u7684\u624b\u673a\u53f7\u3001UnionID\u3001OpenID\u767b\u5f55\u6210\u529f\u540e&#xff0c;\u5e94\u7528\u670d\u52a1\u7aef\u8fd4\u56de\u7528\u6237\u4fe1\u606f\u7ed9\u5e94\u7528\u5ba2\u6237\u7aef&#xff0c;\u5e94\u7528\u5ba2\u6237\u7aef\u53ef\u6839\u636e\u9700\u8981\u8fdb\u884c\u672c\u5730\u6301\u4e45\u5316\u5b58\u50a8&#xff0c;\u4f8b\u5982&#xff1a;\u767b\u5f55\u72b6\u6001\u3001\u7528\u6237\u8d26\u53f7\u540d\u3001\u624b\u673a\u53f7\u3001\u7528\u6237\u8eab\u4efd\u6807\u8bc6\u7b49\u3002<\/p>\n<p>\u5728\u5e94\u7528\u5ba2\u6237\u7aef\u9996\u9875\u6216\u4e2a\u4eba\u4fe1\u606f\u9875\u7b49\u4f4d\u7f6e&#xff0c;\u5bf9\u5f53\u524d\u767b\u5f55\u7528\u6237\u4fe1\u606f\u8fdb\u884c\u5c55\u793a&#xff0c;\u4e3e\u4f8b\u5982\u4e0b\u56fe&#xff1a;<\/p>\n<p>\u70b9\u51fb\u653e\u5927<\/p>\n<h5>\u5f00\u53d1\u540e\u9a8c\u8bc1<\/h5>\n<p>\u96c6\u6210\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u80fd\u529b\u5e94\u7528\u7528\u6237\u4f53\u9a8c\u8d28\u91cf\u5efa\u8bae<\/p>\n<p>\u5e94\u7528\u5b8c\u6210\u5f00\u53d1\u540e&#xff0c;\u53ef\u53c2\u7167\u4ee5\u4e0b\u6807\u51c6\u68c0\u67e5\u96c6\u6210\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u540e\u7684\u7528\u6237\u4f53\u9a8c\u662f\u5426\u7b26\u5408\u9884\u671f&#xff1a;<\/p>\n<table>\n<tr>\u6807\u51c6\u7f16\u53f7\u6807\u51c6\u9879\u540d\u79f0\u7c7b\u578b\u6807\u51c6\u8be6\u7ec6\u63cf\u8ff0<\/tr>\n<tbody>\n<tr>\n<td>1<\/td>\n<td>\u6ee1\u8db3\u534e\u4e3a\u8d26\u53f7\u63d0\u4f9b\u767b\u5f55\u8bbe\u8ba1\u89c4\u8303<\/td>\n<td>\u89c4\u5219<\/td>\n<td>\u9700\u6ee1\u8db3\u534e\u4e3a\u8d26\u53f7\u5f00\u653e\u767b\u5f55\u4e2d \u3010\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u3011\u6309\u94ae \u89c4\u8303&#xff0c;\u4fdd\u969cHarmonyOS\u5e94\u7528\u62e5\u6709\u7b80\u5355\u6613\u7528\u3001\u9ad8\u6548\u4e00\u81f4\u3001\u5feb\u901f\u5b89\u5168\u7684\u767b\u5f55\u4f53\u9a8c\u3002<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>\u4e1a\u52a1\u5b89\u5168\u9a8c\u8bc1\u539f\u5219<\/td>\n<td>\u5efa\u8bae<\/td>\n<td>\u5e94\u7528\u5728\u7528\u6237\u540c\u610f\u540e\u83b7\u53d6\u5230\u624b\u673a\u53f7&#xff0c;\u9700\u7ed3\u5408\u81ea\u8eab\u4e1a\u52a1\u98ce\u63a7\u4f53\u7cfb\u8fdb\u884c\u5fc5\u8981\u7684\u5b89\u5168\u9a8c\u8bc1&#xff0c;\u4ee5\u4fdd\u969c\u7528\u6237\u6570\u636e\u5b89\u5168\u3002<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>\u7528\u6237\u4ea4\u4e92\u4f53\u9a8c\u539f\u5219<\/td>\n<td>\u5efa\u8bae<\/td>\n<td>&#xff08;1&#xff09;\u767b\u5f55\u9875\u9762\u7684\u7528\u6237\u534f\u8bae\u4e0e\u9690\u79c1\u534f\u8bae\u3001\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u8ba4\u8bc1\u534f\u8bae\u53ef\u5c55\u793a\u3001\u53ef\u70b9\u51fb&#xff1b;&#xff08;2&#xff09;\u5f53\u7528\u6237\u70b9\u51fb\u534f\u8bae\u540e&#xff0c;\u56de\u9000\u9875\u9762&#xff0c;\u987b\u56de\u5230\u70b9\u51fb\u524d\u7684\u9875\u9762&#xff1b;&#xff08;3&#xff09;\u53ea\u6709\u7528\u6237\u52fe\u9009\u5e76\u540c\u610f\u6240\u6709\u534f\u8bae\u540e&#xff0c;\u624d\u53ef\u7ee7\u7eed\u8fdb\u884c\u767b\u5f55\u64cd\u4f5c&#xff0c;\u82e5\u7528\u6237\u672a\u52fe\u9009\u534f\u8bae\u65f6\u76f4\u63a5\u70b9\u51fb\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u6309\u94ae&#xff0c;\u987b\u6709\u660e\u786e\u7684\u540c\u610f\u534f\u8bae\u63d0\u9192&#xff1b;&#xff08;4&#xff09;\u70b9\u51fb\u767b\u5f55\u6309\u94ae\u987b\u76f4\u63a5\u5b8c\u6210\u767b\u5f55\u6d41\u7a0b&#xff0c;\u53ef\u51fa\u73b0\u5934\u50cf\u3001\u6635\u79f0\u6388\u6743\u9875&#xff0c;\u4f46\u53d6\u6d88\u573a\u666f\u987b\u4e0d\u5f71\u54cd\u767b\u5f55\u6d41\u7a0b&#xff1b;\u82e5\u51fa\u73b0\u5904\u7406\u5f02\u5e38&#xff0c;\u987b\u53ca\u65f6\u7ec8\u6b62\u9875\u9762&#xff0c;\u4e0d\u5e94\u51fa\u73b0\u5e94\u7528\u65e0\u6cd5\u64cd\u4f5c\u7684\u73b0\u8c61\u3002<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>\u767b\u5f55\u9875\u9762\u5185\u5bb9\u7528\u6237\u4f53\u9a8c\u539f\u5219<\/td>\n<td>\u5efa\u8bae<\/td>\n<td>&#xff08;1&#xff09;\u82e5\u672a\u63d0\u4f9b\u5176\u4ed6\u767b\u5f55\u65b9\u5f0f&#xff0c;\u4e0d\u5e94\u663e\u793a\u201c\u5176\u4ed6\u65b9\u5f0f\u767b\u5f55\u201d\u7684\u5165\u53e3&#xff1b;&#xff08;2&#xff09;\u82e5\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55&#xff0c;\u9875\u9762\u533f\u540d\u624b\u673a\u53f7\u987b\u5c55\u793a\u4ece\u534e\u4e3a\u8d26\u53f7\u4fa7\u83b7\u53d6\u7684\u533f\u540d\u624b\u673a\u53f7&#xff0c;\u4e0d\u5e94\u5c55\u793a\u5176\u4ed6\u6765\u6e90\u7684\u624b\u673a\u53f7&#xff1b;&#xff08;3&#xff09;\u7528\u6237\u534f\u8bae\u4e2d&#xff0c;\u5fc5\u987b\u5305\u542b\u300a\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u8ba4\u8bc1\u534f\u8bae\u300b&#xff0c;\u4e14\u534f\u8bae\u5fc5\u987b\u53ef\u70b9\u51fb\u3001\u53ef\u52a0\u8f7d&#xff0c;\u52a0\u8f7d\u540e\u652f\u6301\u56de\u9000\u9875\u9762&#xff0c;\u4e14\u56de\u5230\u70b9\u51fb\u524d\u7684\u9875\u9762\u3002<\/td>\n<\/tr>\n<tr>\n<td>5<\/td>\n<td>\u5f02\u5e38\u5904\u7406\u7528\u6237\u4f53\u9a8c\u539f\u5219<\/td>\n<td>\u5efa\u8bae<\/td>\n<td>\u767b\u5f55\u9875\u9762\u9700\u8fdb\u884c\u5f02\u5e38\u5904\u7406\u4fdd\u8bc1&#xff1a;&#xff08;1&#xff09;\u82e5\u767b\u5f55\u5f02\u5e38&#xff08;\u5982\u7f51\u7edc\u5f02\u5e38\u3001\u6d77\u5916\u8d26\u53f7\u4e0d\u652f\u6301\u7b49\u60c5\u51b5&#xff09;&#xff0c;\u52ff\u5c06\u9519\u8bef\u7801\u7b49\u539f\u59cb\u4fe1\u606f\u76f4\u63a5\u900f\u4f20\u7ed9\u7528\u6237&#xff1b;&#xff08;2&#xff09;\u82e5\u767b\u5f55\u65f6\u89e6\u53d1\u4e86\u534e\u4e3a\u4fa7\u7684\u77ed\u4fe1\u9a8c\u8bc1\u7801\u6821\u9a8c&#xff0c;\u5219\u5728\u6821\u9a8c\u6210\u529f\u4e4b\u540e&#xff0c;\u5e94\u7528\u4e0d\u5e94\u518d\u5c55\u793a\u989d\u5916\u7684\u9a8c\u8bc1\u7801\u9a8c\u8bc1\u9875\u9762\u3002<\/td>\n<\/tr>\n<tr>\n<td>6<\/td>\n<td>\u5e94\u7528\u751f\u547d\u5468\u671f\u53d8\u5316\u7684\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u4f53\u9a8c\u539f\u5219<\/td>\n<td>\u5efa\u8bae<\/td>\n<td>\u5e94\u7528\u66f4\u65b0\u540e&#xff0c;\u5176\u767b\u5f55\u72b6\u6001\u987b\u4e0e\u66f4\u65b0\u524d\u4e00\u81f4\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>\u534e\u4e3a\u8d26\u53f7\u767b\u5f55&#xff08;\u83b7\u53d6UnionID\/OpenID&#xff09;<\/h4>\n<h5>\u4f7f\u7528\u201c\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u201d\u6309\u94ae\u767b\u5f55<\/h5>\n<h6>\u573a\u666f\u4ecb\u7ecd<\/h6>\n<p>\u5e94\u7528\u53ef\u4ee5\u4f7f\u7528Account Kit\u63d0\u4f9b\u7684\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u6309\u94ae\u7ec4\u4ef6\u53ca\u670d\u52a1\u7aef\u4ea4\u4e92\u83b7\u53d6\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u8eab\u4efd\u6807\u8bc6UnionID\u3001OpenID&#xff0c;\u901a\u8fc7UnionID\u3001OpenID\u5b8c\u6210\u7528\u6237\u767b\u5f55&#xff1b;\u6216\u8005\u4e0e\u5e94\u7528\u8d26\u53f7\u5b8c\u6210\u7ed1\u5b9a&#xff0c;\u7ed1\u5b9a\u540e\u7528\u4e8e\u767b\u5f55\u6216\u8005\u9a8c\u8bc1\u3002<\/p>\n<p>\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u6309\u94ae\u5305\u542b\u6587\u672c\u3001\u6807\u5fd7\u548c\u6587\u672c\u3001\u6807\u5fd7\u4e09\u79cd\u6837\u5f0f&#xff0c;\u4ee5\u6ee1\u8db3\u5e94\u7528\u5bf9\u754c\u9762\u98ce\u683c\u4e00\u81f4\u6027\u548c\u7075\u6d3b\u6027\u7684\u8981\u6c42\u3002<\/p>\n<h6>\u7ea6\u675f\u4e0e\u9650\u5236<\/h6>\n<p>\u534e\u4e3a\u8d26\u53f7\u6309\u94ae\u767b\u5f55\u80fd\u529b\u652f\u6301Phone\u3001Tablet\u3001PC\/2in1\u8bbe\u5907\u3002\u5e76\u4e14\u4ece5.1.1(19)\u7248\u672c\u5f00\u59cb&#xff0c;\u65b0\u589e\u652f\u6301TV\u8bbe\u5907\u3002<\/p>\n<h6>\u7528\u6237\u4f53\u9a8c\u8bbe\u8ba1<\/h6>\n<p>\u8d26\u53f7\u767b\u5f55\u6309\u94ae\u7684\u7528\u6237\u4f53\u9a8c\u548cUX\u8bbe\u8ba1\u9700\u7b26\u5408\u3010\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u3011\u6309\u94ae\u89c4\u8303&#xff0c;\u4e0d\u7b26\u5408\u89c4\u8303\u7684UX\u8bbe\u8ba1\u53ef\u80fd\u4f1a\u5bf9\u5e94\u7528\u4e0a\u67b6\u548c\u7528\u6237\u4f53\u9a8c\u5e26\u6765\u5f71\u54cd\u3002<\/p>\n<h6>\u4e1a\u52a1\u6d41\u7a0b<\/h6>\n<p>\u6d41\u7a0b\u8bf4\u660e&#xff1a;<\/p>\n<p>\u8c03\u7528\u767b\u5f55\u6309\u94ae\u5c55\u793a\u767b\u5f55\u9875\u9636\u6bb5&#xff08;\u5e8f\u53f71-3&#xff09;&#xff1a;<\/p>\n<p>\u7528\u6237\u6253\u5f00\u5e94\u7528\u8fdb\u884c\u767b\u5f55&#xff0c;\u5e94\u7528\u8bbe\u7f6eLoginType\u7c7b\u578b\u4e3aLoginType.ID\u540e\u62c9\u8d77\u5e94\u7528\u81ea\u5df1\u7684\u767b\u5f55\u9875\u5e76\u5c55\u793a\u201c\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u201d\u6309\u94ae&#xff0c;\u7528\u6237\u70b9\u51fb\u6309\u94ae&#xff0c;\u8bf7\u6c42\u534e\u4e3a\u8d26\u53f7\u6388\u6743\u4fe1\u606f\u3002<\/p>\n<p>\u7528\u6237\u70b9\u51fb\u767b\u5f55\u9636\u6bb5&#xff08;\u5e8f\u53f74-6&#xff09;&#xff1a;<\/p>\n<p>\u5982\u534e\u4e3a\u8d26\u53f7\u672a\u767b\u5f55&#xff0c;\u5c06\u62c9\u8d77\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u9875&#xff0c;\u7528\u6237\u767b\u5f55\u540e&#xff0c;\u5c06\u8fd4\u56deAuthorization Code\u7b49\u6570\u636e\u7ed9\u5e94\u7528\u3002<\/p>\n<p>\u5982\u534e\u4e3a\u8d26\u53f7\u5df2\u767b\u5f55&#xff0c;\u5c06\u76f4\u63a5\u8fd4\u56deAuthorization Code\u7b49\u6570\u636e\u7ed9\u5e94\u7528\u3002<\/p>\n<p>\u7528\u6237\u5173\u8054\u5e94\u7528\u8d26\u53f7\u9636\u6bb5&#xff08;\u5e8f\u53f77-16&#xff09;&#xff1a;<\/p>\n<p>\u5e94\u7528\u670d\u52a1\u7aef\u901a\u8fc7Authorization Code\u83b7\u53d6\u5230Access Token&#xff0c;\u518d\u4f7f\u7528Access Token\u8c03\u7528\u89e3\u6790\u51ed\u8bc1\u63a5\u53e3\u83b7\u53d6\u7528\u6237\u76f8\u5173\u4fe1\u606f\u3002\u901a\u8fc7Authorization Code\u51ed\u8bc1\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u53ef\u4ee5\u6709\u6548\u907f\u514d\u9ed1\u5ba2\u901a\u8fc7\u6570\u636e\u904d\u5386\u3001\u8eab\u4efd\u4f2a\u9020\u3001\u91cd\u653e\u653b\u51fb\u7b49\u624b\u6bb5\u5bfc\u81f4\u7684\u5b89\u5168\u98ce\u9669\u3002<\/p>\n<p>\u5e94\u7528\u670d\u52a1\u7aef\u5c06\u4e1a\u52a1\u767b\u5f55\u51ed\u8bc1SessionId\u3001UnionID\/OpenID\u4f20\u7ed9\u5e94\u7528&#xff0c;\u5e94\u7528\u83b7\u53d6\u5230UnionID\/OpenID\u53ef\u7528\u4e8e\u5224\u65ad\u534e\u4e3a\u8d26\u53f7\u662f\u5426\u767b\u5f55\u7b49\u529f\u80fd\u3002<\/p>\n<p>\u5e94\u7528\u5bf9\u7528\u6237\u8eab\u4efd\u6807\u8bc6UnionID\/OpenID\u3001\u4e1a\u52a1\u767b\u5f55\u51ed\u8bc1SessionId\u4fe1\u606f\u8fdb\u884c\u8ba4\u8bc1\u540e&#xff0c;\u901a\u8fc7UnionID\/OpenID\u5224\u65ad\u7528\u6237\u662f\u5426\u5df2\u5173\u8054\u5e94\u7528\u7cfb\u7edf\u6570\u636e\u5e93&#xff0c;\u5982\u5df2\u5173\u8054&#xff0c;\u5219\u5b8c\u6210\u7528\u6237\u767b\u5f55&#xff1b;\u5982\u672a\u5173\u8054&#xff0c;\u5219\u521b\u5efa\u65b0\u7528\u6237&#xff0c;\u7ed1\u5b9aUnionID\/OpenID\u3002<\/p>\n<h6>\u63a5\u53e3\u8bf4\u660e<\/h6>\n<table>\n<tr>\u63a5\u53e3\u540d\u63cf\u8ff0<\/tr>\n<tbody>\n<tr>\n<td>LoginWithHuaweiIDButton<\/td>\n<td>\u534e\u4e3a\u8d26\u53f7Button\u767b\u5f55\u7ec4\u4ef6\u3002\u5f53\u524d\u8be5\u7ec4\u4ef6\u652f\u6301Icon\u7c7b\u578b\u6309\u94ae\u3001\u7eaf\u6587\u672c\u6309\u94ae\u3001Icon\u548c\u6587\u672c\u6df7\u5408\u6309\u94ae&#xff0c;\u5982\u679c\u4ecd\u7136\u4e0d\u80fd\u6ee1\u8db3\u5f00\u53d1\u8005\u7684\u8bc9\u6c42&#xff0c;\u53ef\u4ee5\u4f7f\u7528Style\u7684BUTTON_CUSTOM\u503c\u5b9a\u4e49\u6309\u94ae\u7684\u6587\u5b57\u989c\u8272\u548c\u80cc\u666f\u8272\u3002<\/td>\n<\/tr>\n<tr>\n<td>onClickLoginWithHuaweiIDButton(callback: AsyncCallback): LoginWithHuaweiIDButtonController<\/td>\n<td>\u6ce8\u518c\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u6309\u94ae\u7684\u767b\u5f55\u4e8b\u4ef6\u7ed3\u679c\u56de\u8c03\u3002\u4f7f\u7528callback\u5f02\u6b65\u56de\u8c03\u3002<\/td>\n<\/tr>\n<tr>\n<td>setAgreementStatus(agreementStatus: AgreementStatus): LoginWithHuaweiIDButtonController<\/td>\n<td>\u8bbe\u7f6e\u534f\u8bae\u72b6\u6001\u65b9\u6cd5\u3002\u5982\u679c\u9700\u8981\u7528\u6237\u540c\u610f\u534f\u8bae\u624d\u80fd\u5b8c\u6210\u534e\u4e3a\u8d26\u53f7\u767b\u5f55&#xff0c;\u8bf7\u5148\u8bbe\u7f6e\u534f\u8bae\u72b6\u6001\u4e3aNOT_ACCEPTED&#xff0c;\u5f53\u7528\u6237\u540c\u610f\u534f\u8bae\u540e\u8bbe\u7f6e\u534f\u8bae\u72b6\u6001\u4e3aACCEPTED&#xff0c;\u624d\u53ef\u4ee5\u5b8c\u6210\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u6ce8\u610f<\/p>\n<p>\u4e0a\u8ff0\u63a5\u53e3\u9700\u5728\u9875\u9762\u6216\u81ea\u5b9a\u4e49\u7ec4\u4ef6\u751f\u547d\u5468\u671f\u5185\u8c03\u7528\u3002<\/p>\n<h6>\u5f00\u53d1\u524d\u63d0<\/h6>\n<p>\u5728\u8fdb\u884c\u4ee3\u7801\u5f00\u53d1\u524d&#xff0c;\u8bf7\u786e\u4fdd\u5df2\u6309\u7167\u201c\u5f00\u53d1\u51c6\u5907\u201d\u7ae0\u8282\u4e2d\u7684\u6307\u5bfc\u5b8c\u6210\u914d\u7f6e\u7b7e\u540d\u548c\u6307\u7eb9\u3001\u914d\u7f6eClient ID\u3002\u6b64\u573a\u666f\u65e0\u9700\u7533\u8bf7\u8d26\u53f7\u6743\u9650\u3002<\/p>\n<h6>\u5ba2\u6237\u7aef\u5f00\u53d1<\/h6>\n<p>\u5bfc\u5165LoginWithHuaweiIDButton\u6a21\u5757\u53ca\u76f8\u5173\u516c\u5171\u6a21\u5757\u3002<\/p>\n<p><span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> LoginWithHuaweiIDButton<span class=\"token punctuation\">,<\/span> loginComponentManager <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.AccountKit&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> BusinessError <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.BasicServicesKit&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> hilog <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.PerformanceAnalysisKit&#039;<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>\u8c03\u7528LoginWithHuaweiIDButton\u7ec4\u4ef6&#xff0c;\u5c55\u793a\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u6309\u94ae&#xff0c;\u7528\u6237\u70b9\u51fb\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u6309\u94ae\u540e&#xff0c;\u5e94\u7528\u83b7\u53d6\u5230Authorization Code\u3001ID Token&#xff0c;\u5c06\u6570\u636e\u4f20\u7ed9\u5e94\u7528\u670d\u52a1\u7aef&#xff0c;\u53ef\u53c2\u8003\u5ba2\u6237\u7aef\u4e0e\u670d\u52a1\u7aef\u4ea4\u4e92\u5f00\u53d1\u7684\u5f00\u53d1\u6b65\u9aa4a\u548cb&#xff0c;\u5b8c\u6210\u670d\u52a1\u7aef\u5f00\u53d1\u3002\u901a\u8fc7Authorization Code\u51ed\u8bc1\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u53ef\u4ee5\u6709\u6548\u907f\u514d\u9ed1\u5ba2\u901a\u8fc7\u6570\u636e\u904d\u5386\u3001\u8eab\u4efd\u4f2a\u9020\u3001\u91cd\u653e\u653b\u51fb\u7b49\u624b\u6bb5\u5bfc\u81f4\u7684\u5b89\u5168\u98ce\u9669\u3002\u5e94\u7528\u53ef\u4ee5\u901a\u8fc7\u516c\u5f00\u7684\u7f51\u5740\u83b7\u53d6\u5230\u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u5668\u53d1\u5e03\u7684\u516c\u94a5&#xff0c;\u5bf9\u7b7e\u540d\u548cID Token\u4e2d\u7684\u5fc5\u8981\u4fe1\u606f\u8fdb\u884c\u9a8c\u8bc1&#xff0c;\u4ee5\u8bc1\u660e\u5176\u6ca1\u6709\u88ab\u7be1\u6539\u8fc7\u3002\u89e3\u6790ID Token\u53ef\u53c2\u8003ID Token\u89e3\u6790\u4e0e\u9a8c\u8bc1\u3002<\/p>\n<p><span class=\"token decorator\"><span class=\"token at operator\">&#064;<\/span><span class=\"token function\">Entry<\/span><\/span><br \/>\n<span class=\"token decorator\"><span class=\"token at operator\">&#064;<\/span><span class=\"token function\">Component<\/span><\/span><br \/>\nstruct PreviewLoginButtonPage <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u6784\u9020LoginWithHuaweiIDButton\u7ec4\u4ef6\u7684\u63a7\u5236\u5668<\/span><br \/>\n  controller<span class=\"token operator\">:<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>LoginWithHuaweiIDButtonController <span class=\"token operator\">&#061;<\/span><br \/>\n    <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">loginComponentManager<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">LoginWithHuaweiIDButtonController<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n      <span class=\"token punctuation\">.<\/span><span class=\"token function\">onClickLoginWithHuaweiIDButton<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token operator\">:<\/span> BusinessError<span class=\"token punctuation\">,<\/span> response<span class=\"token operator\">:<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>HuaweiIDCredential<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n          <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">dealAllError<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n          <span class=\"token keyword\">return<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><\/p>\n<p>        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>response<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n          hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;testTag&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;Succeeded in getting response.&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n          <span class=\"token keyword\">const<\/span> authorizationCode <span class=\"token operator\">&#061;<\/span> response<span class=\"token punctuation\">.<\/span>authorizationCode<span class=\"token punctuation\">;<\/span><br \/>\n          <span class=\"token comment\">\/\/ \u5f00\u53d1\u8005\u5904\u7406authorizationCode<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>  <span class=\"token comment\">\/\/ \u9519\u8bef\u5904\u7406<\/span><br \/>\n  <span class=\"token function\">dealAllError<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token operator\">:<\/span> BusinessError<span class=\"token punctuation\">)<\/span><span class=\"token operator\">:<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;testTag&#039;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n      <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">Failed to login, errorCode is <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>error<span class=\"token punctuation\">.<\/span>code<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token string\">, errorMessage is <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>error<span class=\"token punctuation\">.<\/span>message<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u5728\u5e94\u7528\u767b\u5f55\u6d89\u53caUI\u4ea4\u4e92\u573a\u666f\u4e0b&#xff0c;\u5efa\u8bae\u6309\u7167\u5982\u4e0b\u9519\u8bef\u7801\u6307\u5bfc\u63d0\u793a\u7528\u6237<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_LOGIN_OUT<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token comment\">\/\/ \u7528\u6237\u672a\u767b\u5f55\u534e\u4e3a\u8d26\u53f7&#xff0c;\u8bf7\u767b\u5f55\u534e\u4e3a\u8d26\u53f7\u5e76\u91cd\u8bd5\u6216\u8005\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u65b9\u5f0f\u767b\u5f55<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_NETWORK_ERROR<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token comment\">\/\/ \u7f51\u7edc\u9519\u8bef&#xff0c;\u8bf7\u68c0\u67e5\u5f53\u524d\u7f51\u7edc\u72b6\u6001\u5e76\u91cd\u8bd5<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_INTERNAL_ERROR<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token comment\">\/\/ \u767b\u5f55\u5931\u8d25&#xff0c;\u8bf7\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u65b9\u5f0f\u767b\u5f55<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_USER_CANCEL<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token comment\">\/\/ \u7528\u6237\u53d6\u6d88\u6388\u6743<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_SYSTEM_SERVICE<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token comment\">\/\/ \u7cfb\u7edf\u670d\u52a1\u5f02\u5e38&#xff0c;\u8bf7\u7a0d\u540e\u91cd\u8bd5\u6216\u8005\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u65b9\u5f0f\u767b\u5f55<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_REQUEST_REFUSE<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token comment\">\/\/ \u91cd\u590d\u8bf7\u6c42&#xff0c;\u5e94\u7528\u65e0\u9700\u5904\u7406<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_AGREEMENT_STATUS_NOT_ACCEPTED<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token comment\">\/\/ \u7528\u6237\u672a\u540c\u610f\u534f\u8bae<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token comment\">\/\/ \u5e94\u7528\u767b\u5f55\u5931\u8d25&#xff0c;\u8bf7\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u65b9\u5f0f\u767b\u5f55<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><\/p>\n<p>  <span class=\"token function\">build<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token function\">Column<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n          <span class=\"token function\">LoginWithHuaweiIDButton<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n            params<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n              <span class=\"token comment\">\/\/ LoginWithHuaweiIDButton\u652f\u6301\u7684\u6837\u5f0f<\/span><br \/>\n              style<span class=\"token operator\">:<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>Style<span class=\"token punctuation\">.<\/span><span class=\"token constant\">BUTTON_RED<\/span><span class=\"token punctuation\">,<\/span><br \/>\n              <span class=\"token comment\">\/\/ \u8d26\u53f7\u767b\u5f55\u6309\u94ae\u5728\u767b\u5f55\u8fc7\u7a0b\u4e2d\u5c55\u793a\u52a0\u8f7d\u6001<\/span><br \/>\n              extraStyle<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                buttonStyle<span class=\"token operator\">:<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">loginComponentManager<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">ButtonStyle<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">loadingStyle<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n                  show<span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span><br \/>\n                <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n              <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n              <span class=\"token comment\">\/\/ LoginWithHuaweiIDButton\u7684\u8fb9\u6846\u5706\u89d2\u534a\u5f84<\/span><br \/>\n              borderRadius<span class=\"token operator\">:<\/span> <span class=\"token number\">24<\/span><span class=\"token punctuation\">,<\/span><br \/>\n              <span class=\"token comment\">\/\/ LoginWithHuaweiIDButton\u652f\u6301\u7684\u767b\u5f55\u7c7b\u578b<\/span><br \/>\n              loginType<span class=\"token operator\">:<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>LoginType<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ID<\/span><span class=\"token punctuation\">,<\/span><br \/>\n              <span class=\"token comment\">\/\/ LoginWithHuaweiIDButton\u652f\u6301\u6309\u94ae\u7684\u6837\u5f0f\u8ddf\u968f\u7cfb\u7edf\u6df1\u6d45\u8272\u6a21\u5f0f\u5207\u6362<\/span><br \/>\n              supportDarkMode<span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            controller<span class=\"token operator\">:<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>controller<br \/>\n          <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token punctuation\">.<\/span><span class=\"token function\">height<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">40<\/span><span class=\"token punctuation\">)<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">width<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;100%&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">.<\/span><span class=\"token function\">justifyContent<\/span><span class=\"token punctuation\">(<\/span>FlexAlign<span class=\"token punctuation\">.<\/span>Center<span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token punctuation\">.<\/span><span class=\"token function\">constraintSize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> minHeight<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;100%&#039;<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token punctuation\">.<\/span><span class=\"token function\">margin<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n      left<span class=\"token operator\">:<\/span> <span class=\"token number\">16<\/span><span class=\"token punctuation\">,<\/span><br \/>\n      right<span class=\"token operator\">:<\/span> <span class=\"token number\">16<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">export<\/span> <span class=\"token keyword\">enum<\/span> ErrorCode <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u8d26\u53f7\u672a\u767b\u5f55<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_LOGIN_OUT<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001502001<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u7f51\u7edc\u9519\u8bef<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_NETWORK_ERROR<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001502005<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u5185\u90e8\u9519\u8bef<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_INTERNAL_ERROR<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001502009<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u7528\u6237\u53d6\u6d88\u6388\u6743<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_USER_CANCEL<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001502012<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u7cfb\u7edf\u670d\u52a1\u5f02\u5e38<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_SYSTEM_SERVICE<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">12300001<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u91cd\u590d\u8bf7\u6c42<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_REQUEST_REFUSE<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001500002<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u7528\u6237\u672a\u540c\u610f\u7528\u6237\u534f\u8bae<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_AGREEMENT_STATUS_NOT_ACCEPTED<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1005300001<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<h6>\u670d\u52a1\u7aef\u5f00\u53d1<\/h6>\n<p>\u5e94\u7528\u670d\u52a1\u7aef\u4f7f\u7528Client ID\u3001Client Secret\u3001Authorization Code\u8c03\u7528\u83b7\u53d6\u7528\u6237\u7ea7\u51ed\u8bc1\u63a5\u53e3\u5411\u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u5668\u8bf7\u6c42\u83b7\u53d6Access Token\u3001Refresh Token\u3002<\/p>\n<p>\u4f7f\u7528Access Token\u8c03\u7528\u89e3\u6790\u51ed\u8bc1\u63a5\u53e3\u83b7\u53d6\u7528\u6237\u7684UnionID\u3002<\/p>\n<p>Access Token\u8fc7\u671f\u5904\u7406<\/p>\n<p>\u7531\u4e8eAccess Token\u7684\u6709\u6548\u671f\u4ec5\u4e3a60\u5206\u949f&#xff0c;\u5f53Access Token\u5931\u6548\u6216\u8005\u5373\u5c06\u5931\u6548\u65f6&#xff08;\u53ef\u901a\u8fc7REST API\u9519\u8bef\u7801\u5224\u65ad&#xff09;&#xff0c;\u53ef\u4ee5\u4f7f\u7528Refresh Token&#xff08;\u6709\u6548\u671f180\u5929&#xff09;\u901a\u8fc7\u5237\u65b0\u7528\u6237\u7ea7\u51ed\u8bc1\u63a5\u53e3\u5411\u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u5668\u8bf7\u6c42\u83b7\u53d6\u65b0\u7684Access Token\u3002<\/p>\n<p>\u8bf4\u660e<\/p>\n<p>\u5f53Access Token\u5931\u6548\u65f6&#xff0c;\u82e5\u5e94\u7528\u4e0d\u4f7f\u7528Refresh Token\u5411\u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u5668\u8bf7\u6c42\u83b7\u53d6\u65b0\u7684Access Token&#xff0c;\u8d26\u53f7\u7684\u6388\u6743\u4fe1\u606f\u5c06\u4f1a\u5931\u6548&#xff0c;\u5bfc\u81f4\u4f7f\u7528Access Token\u7684\u529f\u80fd\u90fd\u4f1a\u5931\u8d25\u3002<\/p>\n<p>\u5f53Access Token\u975e\u6b63\u5e38\u5931\u6548&#xff08;\u5982\u4fee\u6539\u5bc6\u7801\u3001\u9000\u51fa\u8d26\u53f7\u3001\u5220\u9664\u8bbe\u5907&#xff09;\u65f6&#xff0c;\u5e94\u7528\u53ef\u91cd\u65b0\u767b\u5f55\u6388\u6743\u83b7\u53d6Authorization Code&#xff0c;\u5411\u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u5668\u8bf7\u6c42\u83b7\u53d6\u65b0\u7684Access Token\u3002<\/p>\n<p>Refresh Token\u8fc7\u671f\u5904\u7406<\/p>\n<p>\u7531\u4e8eRefresh Token\u7684\u6709\u6548\u671f\u4e3a180\u5929&#xff0c;\u5f53Refresh Token\u5931\u6548\u540e&#xff08;\u53ef\u901a\u8fc7REST API\u9519\u8bef\u7801\u5224\u65ad&#xff09;&#xff0c;\u5e94\u7528\u670d\u52a1\u7aef\u9700\u8981\u901a\u77e5\u5ba2\u6237\u7aef&#xff0c;\u91cd\u65b0\u8c03\u7528\u6388\u6743\u63a5\u53e3&#xff0c;\u8bf7\u6c42\u7528\u6237\u91cd\u65b0\u6388\u6743\u3002<\/p>\n<p>\u5e94\u7528\u5728\u81ea\u5df1\u7684\u7528\u6237\u4f53\u7cfb\u901a\u8fc7\u67e5\u8be2\u83b7\u53d6\u7684UnionID\u5224\u65ad\u8be5\u7528\u6237\u662f\u5426\u5df2\u5173\u8054\u3002\u5982\u5df2\u5173\u8054&#xff0c;\u5219\u5b8c\u6210\u7528\u6237\u767b\u5f55&#xff1b;\u5982\u672a\u5173\u8054&#xff0c;\u5219\u521b\u5efa\u65b0\u7528\u6237&#xff0c;\u7ed1\u5b9aUnionID&#xff0c;\u5b8c\u6210\u7528\u6237\u767b\u5f55\u3002<\/p>\n<h5>\u4f7f\u7528\u81ea\u5b9a\u4e49\u6309\u94ae\u767b\u5f55<\/h5>\n<h6>\u573a\u666f\u4ecb\u7ecd<\/h6>\n<p>\u5e94\u7528\u5e94\u9075\u7167\u3010\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u3011\u6309\u94ae\u4f7f\u7528\u89c4\u5219&#xff0c;\u5728\u767b\u5f55\u9875\u9762\u5d4c\u5165\u81ea\u5b9a\u4e49\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u6309\u94ae\u3002\u5f53\u7528\u6237\u70b9\u51fb\u8be5\u6309\u94ae\u540e&#xff0c;\u5e94\u7528\u8c03\u7528\u534e\u4e3a\u8d26\u53f7\u767b\u5f55API\u83b7\u53d6Authorization Code&#xff0c;\u5e76\u901a\u8fc7\u670d\u52a1\u7aef\u4ea4\u4e92\u83b7\u53d6\u7528\u6237\u7684UnionID\u3001OpenID\u4ee5\u5b8c\u6210\u767b\u5f55\u3002<\/p>\n<h6>\u7ea6\u675f\u4e0e\u9650\u5236<\/h6>\n<p>\u81ea\u5b9a\u4e49\u6309\u94ae\u767b\u5f55\u80fd\u529b\u652f\u6301Phone\u3001Tablet\u3001PC\/2in1\u8bbe\u5907\u3002\u5e76\u4e14\u4ece5.1.0(18)\u7248\u672c\u5f00\u59cb&#xff0c;\u65b0\u589e\u652f\u6301Wearable\u8bbe\u5907&#xff1b;\u4ece5.1.1(19)\u7248\u672c\u5f00\u59cb&#xff0c;\u65b0\u589e\u652f\u6301TV\u8bbe\u5907\u3002<\/p>\n<h6>\u4e1a\u52a1\u6d41\u7a0b<\/h6>\n<p>\u6d41\u7a0b\u8bf4\u660e&#xff1a;<\/p>\n<p>\u5c55\u793a\u81ea\u5b9a\u4e49\u6309\u94ae\u8c03\u7528\u767b\u5f55API\u9636\u6bb5&#xff08;\u5e8f\u53f71-4&#xff09;&#xff1a;<\/p>\n<p>\u7528\u6237\u6253\u5f00\u5e94\u7528\u8fdb\u884c\u767b\u5f55&#xff0c;\u70b9\u51fb\u81ea\u5b9a\u4e49\u767b\u5f55\u6309\u94ae&#xff0c;\u5e94\u7528\u4f20forceLogin\u7b49\u53c2\u6570\u540e\u8c03\u7528\u534e\u4e3a\u8d26\u53f7\u767b\u5f55API&#xff0c;\u8bf7\u6c42\u534e\u4e3a\u8d26\u53f7\u6388\u6743\u4fe1\u606f\u3002<\/p>\n<p>\u5982\u534e\u4e3a\u8d26\u53f7\u672a\u767b\u5f55&#xff0c;\u5c06\u62c9\u8d77\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u9875&#xff0c;\u7528\u6237\u767b\u5f55\u540e&#xff0c;\u5c06\u8fd4\u56deAuthorization Code\u7b49\u6570\u636e\u7ed9\u5e94\u7528\u3002<\/p>\n<p>\u5982\u534e\u4e3a\u8d26\u53f7\u5df2\u767b\u5f55&#xff0c;\u5c06\u76f4\u63a5\u8fd4\u56deAuthorization Code\u7b49\u6570\u636e\u7ed9\u5e94\u7528\u3002<\/p>\n<p>\u7528\u6237\u5173\u8054\u5e94\u7528\u8d26\u53f7\u9636\u6bb5&#xff08;\u5e8f\u53f75-14&#xff09;&#xff1a;<\/p>\n<p>\u5e94\u7528\u670d\u52a1\u7aef\u901a\u8fc7Authorization Code\u83b7\u53d6\u5230Access Token&#xff0c;\u518d\u4f7f\u7528Access Token\u8c03\u7528\u89e3\u6790\u51ed\u8bc1\u63a5\u53e3\u83b7\u53d6\u7528\u6237\u76f8\u5173\u4fe1\u606f\u3002\u901a\u8fc7Authorization Code\u51ed\u8bc1\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u53ef\u4ee5\u6709\u6548\u907f\u514d\u9ed1\u5ba2\u901a\u8fc7\u6570\u636e\u904d\u5386\u3001\u8eab\u4efd\u4f2a\u9020\u3001\u91cd\u653e\u653b\u51fb\u7b49\u624b\u6bb5\u5bfc\u81f4\u7684\u5b89\u5168\u98ce\u9669\u3002<\/p>\n<p>\u5e94\u7528\u670d\u52a1\u7aef\u5c06\u4e1a\u52a1\u767b\u5f55\u51ed\u8bc1SessionId\u3001UnionID\/OpenID\u4f20\u7ed9\u5e94\u7528&#xff0c;\u5e94\u7528\u83b7\u53d6\u5230UnionID\/OpenID\u53ef\u7528\u4e8e\u5224\u65ad\u534e\u4e3a\u8d26\u53f7\u662f\u5426\u767b\u5f55\u7b49\u529f\u80fd\u3002<\/p>\n<p>\u5e94\u7528\u5bf9\u7528\u6237\u8eab\u4efd\u6807\u8bc6UnionID\/OpenID\u3001\u4e1a\u52a1\u767b\u5f55\u51ed\u8bc1SessionId\u4fe1\u606f\u8fdb\u884c\u8ba4\u8bc1\u540e&#xff0c;\u901a\u8fc7UnionID\/OpenID\u5224\u65ad\u7528\u6237\u662f\u5426\u5df2\u5173\u8054\u5e94\u7528\u7cfb\u7edf\u6570\u636e\u5e93&#xff0c;\u5982\u5df2\u5173\u8054&#xff0c;\u5219\u5b8c\u6210\u7528\u6237\u767b\u5f55&#xff1b;\u5982\u672a\u5173\u8054&#xff0c;\u5219\u521b\u5efa\u65b0\u7528\u6237&#xff0c;\u7ed1\u5b9aUnionID\/OpenID\u3002<\/p>\n<h6>\u63a5\u53e3\u8bf4\u660e<\/h6>\n<table>\n<tr>\u63a5\u53e3\u540d\u63cf\u8ff0<\/tr>\n<tbody>\n<tr>\n<td>createLoginWithHuaweiIDRequest(): LoginWithHuaweiIDRequest<\/td>\n<td>\u521b\u5efa\u8d26\u53f7\u767b\u5f55\u8bf7\u6c42\u3002LoginWithHuaweiIDRequest\u4e2d\u7684forceLogin\u53c2\u6570\u7528\u6765\u63a7\u5236\u5f53\u7528\u6237\u672a\u767b\u5f55\u534e\u4e3a\u8d26\u53f7\u65f6&#xff0c;\u662f\u5426\u5f3a\u5236\u62c9\u8d77\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u754c\u9762\u3002<\/td>\n<\/tr>\n<tr>\n<td>constructor(context?: common.Context)<\/td>\n<td>\u521b\u5efa\u767b\u5f55\u8bf7\u6c42Controller\u3002<\/td>\n<\/tr>\n<tr>\n<td>executeRequest(request: AuthenticationRequest): Promise<\/td>\n<td>\u901a\u8fc7Promise\u65b9\u5f0f\u6267\u884c\u767b\u5f55\u64cd\u4f5c\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u6ce8\u610f<\/p>\n<p>\u4e0a\u8ff0\u63a5\u53e3\u9700\u5728\u9875\u9762\u6216\u81ea\u5b9a\u4e49\u7ec4\u4ef6\u751f\u547d\u5468\u671f\u5185\u8c03\u7528\u3002<\/p>\n<h6>\u5f00\u53d1\u524d\u63d0<\/h6>\n<p>\u5728\u8fdb\u884c\u4ee3\u7801\u5f00\u53d1\u524d&#xff0c;\u8bf7\u786e\u4fdd\u5df2\u6309\u7167\u201c\u5f00\u53d1\u51c6\u5907\u201d\u7ae0\u8282\u4e2d\u7684\u6307\u5bfc\u5b8c\u6210\u914d\u7f6e\u7b7e\u540d\u548c\u6307\u7eb9\u3001\u914d\u7f6eClient ID\u3002\u6b64\u573a\u666f\u65e0\u9700\u7533\u8bf7\u8d26\u53f7\u6743\u9650\u3002<\/p>\n<h6>\u5ba2\u6237\u7aef\u5f00\u53d1<\/h6>\n<p>\u6839\u636e\u3010\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u3011\u6309\u94ae\u89c4\u8303\u5f00\u53d1\u81ea\u5b9a\u4e49\u767b\u5f55\u56fe\u6807\u6309\u94ae&#xff0c;\u53c2\u8003\u5982\u4e0b\u6b65\u9aa4\u5728\u70b9\u51fb\u4e8b\u4ef6\u4e2d\u5b8c\u6210\u534e\u4e3a\u8d26\u53f7\u767b\u5f55API\u8c03\u7528\u3002<\/p>\n<p>\u5bfc\u5165authentication\u6a21\u5757\u53ca\u76f8\u5173\u516c\u5171\u6a21\u5757\u3002<\/p>\n<p><span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> authentication <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.AccountKit&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> hilog <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.PerformanceAnalysisKit&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> util <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.ArkTS&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> BusinessError <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.BasicServicesKit&#039;<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>\u521b\u5efa\u767b\u5f55\u8bf7\u6c42\u5e76\u8bbe\u7f6e\u53c2\u6570\u3002<\/p>\n<p><span class=\"token comment\">\/\/ \u521b\u5efa\u767b\u5f55\u8bf7\u6c42&#xff0c;\u5e76\u8bbe\u7f6e\u53c2\u6570<\/span><br \/>\n<span class=\"token keyword\">const<\/span> loginRequest <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">authentication<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">HuaweiIDProvider<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">createLoginWithHuaweiIDRequest<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/ \u7528\u6237\u662f\u5426\u9700\u8981\u767b\u5f55\u6388\u6743&#xff0c;\u8be5\u503c\u4e3atrue\u4e14\u7528\u6237\u672a\u767b\u5f55\u6216\u672a\u6388\u6743\u65f6&#xff0c;\u4f1a\u62c9\u8d77\u7528\u6237\u767b\u5f55\u6216\u6388\u6743\u9875\u9762<\/span><br \/>\nloginRequest<span class=\"token punctuation\">.<\/span>forceLogin <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/ \u5efa\u8bae\u4f7f\u7528generateRandomUUID\u751f\u6210state&#xff0c;\u53ef\u7528\u4e8e\u4e00\u81f4\u6027\u6bd4\u5bf9&#xff0c;\u9632\u6b62\u8de8\u7ad9\u653b\u51fb<\/span><br \/>\nloginRequest<span class=\"token punctuation\">.<\/span>state <span class=\"token operator\">&#061;<\/span> util<span class=\"token punctuation\">.<\/span><span class=\"token function\">generateRandomUUID<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>\u8c03\u7528AuthenticationController\u5bf9\u8c61\u7684executeRequest\u65b9\u6cd5\u6267\u884c\u767b\u5f55\u8bf7\u6c42&#xff0c;\u5e76\u5904\u7406\u767b\u5f55\u7ed3\u679c&#xff0c;\u83b7\u53d6\u5230Authorization Code\u53caID Token\u3002\u4e4b\u540e\u5c06Authorization Code\u4f20\u7ed9\u5e94\u7528\u670d\u52a1\u7aef\u5904\u7406&#xff0c;\u53ef\u53c2\u8003\u5ba2\u6237\u7aef\u4e0e\u670d\u52a1\u7aef\u4ea4\u4e92\u5f00\u53d1\u7684\u5f00\u53d1\u6b65\u9aa4a\u548cb\u3002\u901a\u8fc7code\u51ed\u8bc1\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u53ef\u4ee5\u6709\u6548\u907f\u514d\u9ed1\u5ba2\u901a\u8fc7\u6570\u636e\u904d\u5386\u3001\u8eab\u4efd\u4f2a\u9020\u3001\u91cd\u653e\u653b\u51fb\u7b49\u624b\u6bb5\u5bfc\u81f4\u7684\u5b89\u5168\u98ce\u9669\u3002\u5e94\u7528\u53ef\u4ee5\u901a\u8fc7\u516c\u5f00\u7684\u7f51\u5740\u83b7\u53d6\u5230\u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u5668\u53d1\u5e03\u7684\u516c\u94a5&#xff0c;\u5bf9\u7b7e\u540d\u548cID Token\u4e2d\u7684\u5fc5\u8981\u4fe1\u606f\u8fdb\u884c\u9a8c\u8bc1&#xff0c;\u4ee5\u8bc1\u660e\u5176\u6ca1\u6709\u88ab\u7be1\u6539\u8fc7\u3002\u89e3\u6790ID Token\u53ef\u53c2\u8003ID Token\u89e3\u6790\u4e0e\u9a8c\u8bc1\u3002<\/p>\n<p><span class=\"token comment\">\/\/ \u6267\u884c\u767b\u5f55\u8bf7\u6c42<\/span><br \/>\n<span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u6b64\u793a\u4f8b\u4e3a\u4ee3\u7801\u7247\u6bb5&#xff0c;\u5b9e\u9645\u9700\u5728\u81ea\u5b9a\u4e49\u7ec4\u4ef6\u5b9e\u4f8b\u4e2d\u4f7f\u7528&#xff0c;\u5e76\u4f20\u5165\u6709\u6548\u7684Context\u4e0a\u4e0b\u6587\u5bf9\u8c61<\/span><br \/>\n  <span class=\"token keyword\">const<\/span> controller <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">authentication<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">AuthenticationController<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getUIContext<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getHostContext<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  controller<span class=\"token punctuation\">.<\/span><span class=\"token function\">executeRequest<\/span><span class=\"token punctuation\">(<\/span>loginRequest<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">then<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>response<span class=\"token operator\">:<\/span> authentication<span class=\"token punctuation\">.<\/span>LoginWithHuaweiIDResponse<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> loginWithHuaweiIDResponse <span class=\"token operator\">&#061;<\/span> response <span class=\"token keyword\">as<\/span> authentication<span class=\"token punctuation\">.<\/span>LoginWithHuaweiIDResponse<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> state <span class=\"token operator\">&#061;<\/span> loginWithHuaweiIDResponse<span class=\"token punctuation\">.<\/span>state<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ state\u4e3a\u7a7a\u65f6&#xff0c;\u5f52\u4e00\u5316\u5904\u7406\u4e3a\u7a7a\u5b57\u7b26\u4e32<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> normalizedRequestState <span class=\"token operator\">&#061;<\/span> loginRequest<span class=\"token punctuation\">.<\/span>state <span class=\"token operator\">||<\/span> <span class=\"token string\">&#039;&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> normalizedState <span class=\"token operator\">&#061;<\/span> state <span class=\"token operator\">||<\/span> <span class=\"token string\">&#039;&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>normalizedRequestState <span class=\"token operator\">!&#061;&#061;<\/span> normalizedState<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;testTag&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">Failed to login. The state is different, response state: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>state<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token keyword\">return<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;testTag&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;Succeeded in logging in.&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> loginWithHuaweiIDCredential <span class=\"token operator\">&#061;<\/span> loginWithHuaweiIDResponse<span class=\"token operator\">?.<\/span>data<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> authorizationCode <span class=\"token operator\">&#061;<\/span> loginWithHuaweiIDCredential<span class=\"token operator\">?.<\/span>authorizationCode<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u5f00\u53d1\u8005\u5904\u7406authorizationCode<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">catch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token operator\">:<\/span> BusinessError<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token function\">dealAllError<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">catch<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token function\">dealAllError<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token comment\">\/\/ \u9519\u8bef\u5904\u7406<\/span><br \/>\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">dealAllError<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token operator\">:<\/span> BusinessError<span class=\"token punctuation\">)<\/span><span class=\"token operator\">:<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;testTag&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">Failed to login. Code: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>error<span class=\"token punctuation\">.<\/span>code<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token string\">, message: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>error<span class=\"token punctuation\">.<\/span>message<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u5728\u5e94\u7528\u767b\u5f55\u6d89\u53caUI\u4ea4\u4e92\u573a\u666f\u4e0b&#xff0c;\u5efa\u8bae\u6309\u7167\u5982\u4e0b\u9519\u8bef\u7801\u6307\u5bfc\u63d0\u793a\u7528\u6237<\/span><br \/>\n  <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_LOGIN_OUT<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u7528\u6237\u672a\u767b\u5f55\u534e\u4e3a\u8d26\u53f7&#xff0c;\u8bf7\u767b\u5f55\u534e\u4e3a\u8d26\u53f7\u5e76\u91cd\u8bd5\u6216\u8005\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u65b9\u5f0f\u767b\u5f55<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_NETWORK_ERROR<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u7f51\u7edc\u9519\u8bef&#xff0c;\u8bf7\u68c0\u67e5\u5f53\u524d\u7f51\u7edc\u72b6\u6001\u5e76\u91cd\u8bd5<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_INTERNAL_ERROR<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u767b\u5f55\u5931\u8d25&#xff0c;\u8bf7\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u65b9\u5f0f\u767b\u5f55<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_USER_CANCEL<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u7528\u6237\u53d6\u6d88\u6388\u6743<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_SYSTEM_SERVICE<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u7cfb\u7edf\u670d\u52a1\u5f02\u5e38&#xff0c;\u8bf7\u7a0d\u540e\u91cd\u8bd5\u6216\u8005\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u65b9\u5f0f\u767b\u5f55<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_REQUEST_REFUSE<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u91cd\u590d\u8bf7\u6c42&#xff0c;\u5e94\u7528\u65e0\u9700\u5904\u7406<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u5e94\u7528\u767b\u5f55\u5931\u8d25&#xff0c;\u8bf7\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u65b9\u5f0f\u767b\u5f55<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">export<\/span> <span class=\"token keyword\">enum<\/span> ErrorCode <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u8d26\u53f7\u672a\u767b\u5f55<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_LOGIN_OUT<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001502001<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u7f51\u7edc\u9519\u8bef<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_NETWORK_ERROR<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001502005<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u5185\u90e8\u9519\u8bef<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_INTERNAL_ERROR<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001502009<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u7528\u6237\u53d6\u6d88\u6388\u6743<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_USER_CANCEL<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001502012<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u7cfb\u7edf\u670d\u52a1\u5f02\u5e38<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_SYSTEM_SERVICE<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">12300001<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u91cd\u590d\u8bf7\u6c42<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_REQUEST_REFUSE<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001500002<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<h6>\u670d\u52a1\u7aef\u5f00\u53d1<\/h6>\n<p>\u5e94\u7528\u670d\u52a1\u7aef\u4f7f\u7528Client ID\u3001Client Secret\u3001Authorization Code\u8c03\u7528\u83b7\u53d6\u7528\u6237\u7ea7\u51ed\u8bc1\u63a5\u53e3\u5411\u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u5668\u8bf7\u6c42\u83b7\u53d6Access Token\u3001Refresh Token\u3002<\/p>\n<p>\u4f7f\u7528Access Token\u8c03\u7528\u89e3\u6790\u51ed\u8bc1\u63a5\u53e3\u83b7\u53d6\u7528\u6237\u7684UnionID\u3002<\/p>\n<p>Access Token\u8fc7\u671f\u5904\u7406<\/p>\n<p>\u7531\u4e8eAccess Token\u7684\u6709\u6548\u671f\u4ec5\u4e3a60\u5206\u949f&#xff0c;\u5f53Access Token\u5931\u6548\u6216\u8005\u5373\u5c06\u5931\u6548\u65f6&#xff08;\u53ef\u901a\u8fc7REST API\u9519\u8bef\u7801\u5224\u65ad&#xff09;&#xff0c;\u53ef\u4ee5\u4f7f\u7528Refresh Token&#xff08;\u6709\u6548\u671f180\u5929&#xff09;\u901a\u8fc7\u5237\u65b0\u7528\u6237\u7ea7\u51ed\u8bc1\u63a5\u53e3\u5411\u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u5668\u8bf7\u6c42\u83b7\u53d6\u65b0\u7684Access Token\u3002<\/p>\n<p>\u8bf4\u660e<\/p>\n<p>\u5f53Access Token\u5931\u6548\u65f6&#xff0c;\u82e5\u5e94\u7528\u4e0d\u4f7f\u7528Refresh Token\u5411\u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u5668\u8bf7\u6c42\u83b7\u53d6\u65b0\u7684Access Token&#xff0c;\u8d26\u53f7\u7684\u6388\u6743\u4fe1\u606f\u5c06\u4f1a\u5931\u6548&#xff0c;\u5bfc\u81f4\u4f7f\u7528Access Token\u7684\u529f\u80fd\u90fd\u4f1a\u5931\u8d25\u3002<\/p>\n<p>\u5f53Access Token\u975e\u6b63\u5e38\u5931\u6548&#xff08;\u5982\u4fee\u6539\u5bc6\u7801\u3001\u9000\u51fa\u8d26\u53f7\u3001\u5220\u9664\u8bbe\u5907&#xff09;\u65f6&#xff0c;\u5e94\u7528\u53ef\u91cd\u65b0\u767b\u5f55\u6388\u6743\u83b7\u53d6Authorization Code&#xff0c;\u5411\u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u5668\u8bf7\u6c42\u83b7\u53d6\u65b0\u7684Access Token\u3002<\/p>\n<p>Refresh Token\u8fc7\u671f\u5904\u7406<\/p>\n<p>\u7531\u4e8eRefresh Token\u7684\u6709\u6548\u671f\u4e3a180\u5929&#xff0c;\u5f53Refresh Token\u5931\u6548\u540e&#xff08;\u53ef\u901a\u8fc7REST API\u9519\u8bef\u7801\u5224\u65ad&#xff09;&#xff0c;\u5e94\u7528\u670d\u52a1\u7aef\u9700\u8981\u901a\u77e5\u5ba2\u6237\u7aef&#xff0c;\u91cd\u65b0\u8c03\u7528\u6388\u6743\u63a5\u53e3&#xff0c;\u8bf7\u6c42\u7528\u6237\u91cd\u65b0\u6388\u6743\u3002<\/p>\n<p>\u5e94\u7528\u5728\u81ea\u5df1\u7684\u7528\u6237\u4f53\u7cfb\u901a\u8fc7\u67e5\u8be2\u83b7\u53d6\u7684UnionID\u5224\u65ad\u8be5\u7528\u6237\u662f\u5426\u5df2\u5173\u8054\u3002\u5982\u5df2\u5173\u8054&#xff0c;\u5219\u5b8c\u6210\u7528\u6237\u767b\u5f55&#xff1b;\u5982\u672a\u5173\u8054&#xff0c;\u5219\u521b\u5efa\u65b0\u7528\u6237&#xff0c;\u7ed1\u5b9aUnionID&#xff0c;\u5b8c\u6210\u7528\u6237\u767b\u5f55\u3002<\/p>\n<h5>\u9759\u9ed8\u767b\u5f55<\/h5>\n<h6>\u573a\u666f\u4ecb\u7ecd<\/h6>\n<p>\u5728\u5e94\u7528\u5378\u8f7d\u91cd\u88c5\u3001\u7528\u6237\u6362\u673a\u7b49\u573a\u666f&#xff0c;\u5982\u767b\u5f55\u7684\u534e\u4e3a\u8d26\u53f7\u4e0e\u5e94\u7528\u91cd\u88c5\u3001\u6362\u673a\u524d\u4e00\u81f4&#xff0c;\u5e94\u7528\u53ef\u901a\u8fc7Account Kit\u63d0\u4f9b\u7684\u9759\u9ed8\u767b\u5f55\u65b9\u5f0f\u5373\u4e0d\u9700\u8981\u7528\u6237\u70b9\u51fb\u767b\u5f55\/\u6ce8\u518c\u6309\u94ae&#xff0c;\u5373\u53ef\u83b7\u53d6\u7528\u6237\u7684\u8eab\u4efd\u6807\u8bc6UnionID\/OpenID&#xff0c;\u5b8c\u6210\u7528\u6237\u7684\u9759\u9ed8\u767b\u5f55\u3002<\/p>\n<h6>\u7ea6\u675f\u4e0e\u9650\u5236<\/h6>\n<p>\u9759\u9ed8\u767b\u5f55\u80fd\u529b\u652f\u6301Phone\u3001Tablet\u3001PC\/2in1\u8bbe\u5907\u3002\u5e76\u4e14\u4ece5.1.0(18)\u7248\u672c\u5f00\u59cb&#xff0c;\u65b0\u589e\u652f\u6301Wearable\u8bbe\u5907&#xff1b;\u4ece5.1.1(19)\u7248\u672c\u5f00\u59cb&#xff0c;\u65b0\u589e\u652f\u6301TV\u8bbe\u5907\u3002<\/p>\n<h6>\u4e1a\u52a1\u6d41\u7a0b<\/h6>\n<p>\u6d41\u7a0b\u8bf4\u660e&#xff1a;<\/p>\n<p>\u8c03\u7528\u767b\u5f55API\u9636\u6bb5&#xff08;\u5e8f\u53f71-3&#xff09;&#xff1a;<\/p>\n<p>\u7528\u6237\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u8fc7\u5e94\u7528&#xff0c;\u5e94\u7528\u5378\u8f7d\u91cd\u88c5\u3001\u7528\u6237\u6362\u673a\u540e\u518d\u8fdb\u5165\u5e94\u7528\u65f6&#xff0c;\u5e94\u7528\u4f20forceLogin &#061; false\u7b49\u53c2\u6570\u8c03\u7528\u767b\u5f55API\u3002<\/p>\n<p>\u5982\u534e\u4e3a\u8d26\u53f7\u5df2\u767b\u5f55&#xff0c;\u4e14API\u8c03\u7528\u6210\u529f&#xff0c;\u5e94\u7528\u80fd\u83b7\u53d6\u5230Authorization Code\u7b49\u767b\u5f55\u7ed3\u679c\u3002\u6ce8\u610f&#xff1a;\u5982\u534e\u4e3a\u8d26\u53f7\u672a\u767b\u5f55&#xff0c;\u5e94\u7528\u4f1a\u83b7\u53d6\u52301001502001 \u7528\u6237\u672a\u767b\u5f55\u534e\u4e3a\u8d26\u53f7\u9519\u8bef\u7801&#xff0c;\u518d\u6839\u636e\u9700\u8981\u81ea\u884c\u5904\u7406\u3002<\/p>\n<p>\u7528\u6237\u5173\u8054\u5e94\u7528\u8d26\u53f7\u9636\u6bb5&#xff08;\u5e8f\u53f74-13&#xff09;&#xff1a;<\/p>\n<p>\u5e94\u7528\u670d\u52a1\u7aef\u901a\u8fc7Authorization Code\u83b7\u53d6\u5230Access Token&#xff0c;\u518d\u4f7f\u7528Access Token\u8c03\u7528\u89e3\u6790\u51ed\u8bc1\u63a5\u53e3\u83b7\u53d6\u7528\u6237\u76f8\u5173\u4fe1\u606f\u3002\u901a\u8fc7Authorization Code\u51ed\u8bc1\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u53ef\u4ee5\u6709\u6548\u907f\u514d\u9ed1\u5ba2\u901a\u8fc7\u6570\u636e\u904d\u5386\u3001\u8eab\u4efd\u4f2a\u9020\u3001\u91cd\u653e\u653b\u51fb\u7b49\u624b\u6bb5\u5bfc\u81f4\u7684\u5b89\u5168\u98ce\u9669\u3002<\/p>\n<p>\u5e94\u7528\u670d\u52a1\u7aef\u5c06\u4e1a\u52a1\u767b\u5f55\u51ed\u8bc1SessionId\u3001UnionID\/OpenID\u4f20\u7ed9\u5e94\u7528&#xff0c;\u5e94\u7528\u83b7\u53d6\u5230UnionID\/OpenID\u53ef\u7528\u4e8e\u5224\u65ad\u534e\u4e3a\u8d26\u53f7\u662f\u5426\u767b\u5f55\u7b49\u529f\u80fd\u3002<\/p>\n<p>\u5e94\u7528\u5bf9\u7528\u6237\u8eab\u4efd\u6807\u8bc6UnionID\/OpenID\u3001\u4e1a\u52a1\u767b\u5f55\u51ed\u8bc1SessionId\u4fe1\u606f\u8fdb\u884c\u5b89\u5168\u8ba4\u8bc1\u540e\u5b8c\u6210\u9759\u9ed8\u767b\u5f55\u3002<\/p>\n<h6>\u63a5\u53e3\u8bf4\u660e<\/h6>\n<table>\n<tr>\u63a5\u53e3\u540d\u63cf\u8ff0<\/tr>\n<tbody>\n<tr>\n<td>createLoginWithHuaweiIDRequest(): LoginWithHuaweiIDRequest<\/td>\n<td>\u521b\u5efa\u8d26\u53f7\u767b\u5f55\u8bf7\u6c42\u3002LoginWithHuaweiIDRequest\u4e2d\u7684forceLogin\u53c2\u6570\u7528\u6765\u63a7\u5236\u5f53\u7528\u6237\u672a\u767b\u5f55\u534e\u4e3a\u8d26\u53f7\u65f6&#xff0c;\u662f\u5426\u5f3a\u5236\u62c9\u8d77\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u754c\u9762&#xff0c;\u9759\u9ed8\u767b\u5f55\u573a\u666f\u8bbe\u7f6e\u4e3afalse\u3002<\/td>\n<\/tr>\n<tr>\n<td>constructor(context?: common.Context)<\/td>\n<td>\u521b\u5efa\u767b\u5f55\u8bf7\u6c42Controller\u3002<\/td>\n<\/tr>\n<tr>\n<td>executeRequest(request: AuthenticationRequest): Promise<\/td>\n<td>\u901a\u8fc7Promise\u65b9\u5f0f\u6267\u884c\u767b\u5f55\u64cd\u4f5c\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h6>\u5f00\u53d1\u524d\u63d0<\/h6>\n<p>\u5728\u8fdb\u884c\u4ee3\u7801\u5f00\u53d1\u524d&#xff0c;\u8bf7\u786e\u4fdd\u5df2\u6309\u7167\u201c\u5f00\u53d1\u51c6\u5907\u201d\u7ae0\u8282\u4e2d\u7684\u6307\u5bfc\u5b8c\u6210\u914d\u7f6e\u7b7e\u540d\u548c\u6307\u7eb9\u3001\u914d\u7f6eClient ID\u3002\u6b64\u573a\u666f\u65e0\u9700\u7533\u8bf7\u8d26\u53f7\u6743\u9650\u3002<\/p>\n<h6>\u5ba2\u6237\u7aef\u5f00\u53d1<\/h6>\n<p>\u5bfc\u5165authentication\u6a21\u5757\u53ca\u76f8\u5173\u516c\u5171\u6a21\u5757\u3002<\/p>\n<p><span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> authentication <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.AccountKit&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> hilog <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.PerformanceAnalysisKit&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> util <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.ArkTS&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> BusinessError <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.BasicServicesKit&#039;<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>\u521b\u5efa\u767b\u5f55\u8bf7\u6c42\u5e76\u8bbe\u7f6e\u53c2\u6570\u3002<\/p>\n<p><span class=\"token comment\">\/\/ \u521b\u5efa\u767b\u5f55\u8bf7\u6c42&#xff0c;\u5e76\u8bbe\u7f6e\u53c2\u6570<\/span><br \/>\n<span class=\"token keyword\">const<\/span> loginRequest <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">authentication<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">HuaweiIDProvider<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">createLoginWithHuaweiIDRequest<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/ false\u8868\u793a\u9759\u9ed8\u767b\u5f55<\/span><br \/>\nloginRequest<span class=\"token punctuation\">.<\/span>forceLogin <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">false<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/ \u5efa\u8bae\u4f7f\u7528generateRandomUUID\u751f\u6210state&#xff0c;\u53ef\u7528\u4e8e\u4e00\u81f4\u6027\u6bd4\u5bf9&#xff0c;\u9632\u6b62\u8de8\u7ad9\u653b\u51fb<\/span><br \/>\nloginRequest<span class=\"token punctuation\">.<\/span>state <span class=\"token operator\">&#061;<\/span> util<span class=\"token punctuation\">.<\/span><span class=\"token function\">generateRandomUUID<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>\u8c03\u7528AuthenticationController\u5bf9\u8c61\u7684executeRequest\u65b9\u6cd5\u6267\u884c\u767b\u5f55\u8bf7\u6c42&#xff0c;\u5e76\u5904\u7406\u767b\u5f55\u7ed3\u679c&#xff0c;\u83b7\u53d6\u5230Authorization Code\u53caID Token\u3002\u4e4b\u540e\u5c06Authorization Code\u4f20\u7ed9\u5e94\u7528\u670d\u52a1\u7aef\u5904\u7406&#xff0c;\u53ef\u53c2\u8003\u5ba2\u6237\u7aef\u4e0e\u670d\u52a1\u7aef\u4ea4\u4e92\u5f00\u53d1\u7684\u5f00\u53d1\u6b65\u9aa4a\u548cb\u3002\u5e94\u7528\u53ef\u4ee5\u901a\u8fc7\u516c\u5f00\u7684\u7f51\u5740\u83b7\u53d6\u5230\u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u5668\u53d1\u5e03\u7684\u516c\u94a5&#xff0c;\u5bf9\u7b7e\u540d\u548cID Token\u4e2d\u7684\u5fc5\u8981\u4fe1\u606f\u8fdb\u884c\u9a8c\u8bc1&#xff0c;\u4ee5\u8bc1\u660e\u5176\u6ca1\u6709\u88ab\u7be1\u6539\u8fc7\u3002\u89e3\u6790ID Token\u53ef\u53c2\u8003ID Token\u89e3\u6790\u4e0e\u9a8c\u8bc1\u3002<\/p>\n<p><span class=\"token comment\">\/\/ \u6267\u884c\u767b\u5f55\u8bf7\u6c42<\/span><br \/>\n<span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token keyword\">const<\/span> controller <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">authentication<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">AuthenticationController<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  controller<span class=\"token punctuation\">.<\/span><span class=\"token function\">executeRequest<\/span><span class=\"token punctuation\">(<\/span>loginRequest<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">then<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>response<span class=\"token operator\">:<\/span> authentication<span class=\"token punctuation\">.<\/span>LoginWithHuaweiIDResponse<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> loginWithHuaweiIDResponse <span class=\"token operator\">&#061;<\/span> response <span class=\"token keyword\">as<\/span> authentication<span class=\"token punctuation\">.<\/span>LoginWithHuaweiIDResponse<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> state <span class=\"token operator\">&#061;<\/span> loginWithHuaweiIDResponse<span class=\"token punctuation\">.<\/span>state<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ state\u4e3a\u7a7a\u65f6&#xff0c;\u5f52\u4e00\u5316\u5904\u7406\u4e3a\u7a7a\u5b57\u7b26\u4e32<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> normalizedRequestState <span class=\"token operator\">&#061;<\/span> loginRequest<span class=\"token punctuation\">.<\/span>state <span class=\"token operator\">||<\/span> <span class=\"token string\">&#039;&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> normalizedState <span class=\"token operator\">&#061;<\/span> state <span class=\"token operator\">||<\/span> <span class=\"token string\">&#039;&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>normalizedRequestState <span class=\"token operator\">!&#061;&#061;<\/span> normalizedState<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;testTag&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">Failed to login. The state is different, response state: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>state<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token keyword\">return<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;testTag&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;Succeeded in logging in.&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> loginWithHuaweiIDCredential <span class=\"token operator\">&#061;<\/span> loginWithHuaweiIDResponse<span class=\"token operator\">?.<\/span>data<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> authorizationCode <span class=\"token operator\">&#061;<\/span> loginWithHuaweiIDCredential<span class=\"token operator\">?.<\/span>authorizationCode<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u5f00\u53d1\u8005\u5904\u7406authorizationCode<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">catch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token operator\">:<\/span> BusinessError<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token function\">dealAllError<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">catch<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token function\">dealAllError<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u9519\u8bef\u5904\u7406<\/span><br \/>\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">dealAllError<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token operator\">:<\/span> BusinessError<span class=\"token punctuation\">)<\/span><span class=\"token operator\">:<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;testTag&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">Failed to login. Code: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>error<span class=\"token punctuation\">.<\/span>code<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token string\">, message: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>error<span class=\"token punctuation\">.<\/span>message<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u5728\u5e94\u7528\u767b\u5f55\u6d89\u53caUI\u4ea4\u4e92\u573a\u666f\u4e0b&#xff0c;\u5efa\u8bae\u6309\u7167\u5982\u4e0b\u9519\u8bef\u7801\u6307\u5bfc\u63d0\u793a\u7528\u6237<\/span><br \/>\n  <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_LOGIN_OUT<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u7528\u6237\u672a\u767b\u5f55\u534e\u4e3a\u8d26\u53f7&#xff0c;\u8bf7\u767b\u5f55\u534e\u4e3a\u8d26\u53f7\u5e76\u91cd\u8bd5\u6216\u8005\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u65b9\u5f0f\u767b\u5f55<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_NETWORK_ERROR<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u7f51\u7edc\u9519\u8bef&#xff0c;\u8bf7\u68c0\u67e5\u5f53\u524d\u7f51\u7edc\u72b6\u6001\u5e76\u91cd\u8bd5<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_INTERNAL_ERROR<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u767b\u5f55\u5931\u8d25&#xff0c;\u8bf7\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u65b9\u5f0f\u767b\u5f55<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_USER_CANCEL<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u7528\u6237\u53d6\u6d88\u6388\u6743<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_SYSTEM_SERVICE<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u7cfb\u7edf\u670d\u52a1\u5f02\u5e38&#xff0c;\u8bf7\u7a0d\u540e\u91cd\u8bd5\u6216\u8005\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u65b9\u5f0f\u767b\u5f55<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_REQUEST_REFUSE<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u91cd\u590d\u8bf7\u6c42&#xff0c;\u5e94\u7528\u65e0\u9700\u5904\u7406<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u5e94\u7528\u767b\u5f55\u5931\u8d25&#xff0c;\u8bf7\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u65b9\u5f0f\u767b\u5f55<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">export<\/span> <span class=\"token keyword\">enum<\/span> ErrorCode <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u8d26\u53f7\u672a\u767b\u5f55<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_LOGIN_OUT<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001502001<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u7f51\u7edc\u9519\u8bef<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_NETWORK_ERROR<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001502005<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u5185\u90e8\u9519\u8bef<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_INTERNAL_ERROR<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001502009<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u7528\u6237\u53d6\u6d88\u6388\u6743<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_USER_CANCEL<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001502012<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u7cfb\u7edf\u670d\u52a1\u5f02\u5e38<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_SYSTEM_SERVICE<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">12300001<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u91cd\u590d\u8bf7\u6c42<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_REQUEST_REFUSE<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001500002<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<h6>\u670d\u52a1\u7aef\u5f00\u53d1<\/h6>\n<p>\u5e94\u7528\u670d\u52a1\u7aef\u4f7f\u7528Client ID\u3001Client Secret\u3001Authorization Code\u8c03\u7528\u83b7\u53d6\u7528\u6237\u7ea7\u51ed\u8bc1\u63a5\u53e3\u5411\u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u5668\u8bf7\u6c42\u83b7\u53d6Access Token\u3001Refresh Token\u3002<\/p>\n<p>\u4f7f\u7528Access Token\u8c03\u7528\u89e3\u6790\u51ed\u8bc1\u63a5\u53e3\u83b7\u53d6\u7528\u6237\u7684UnionID\u3002<\/p>\n<p>Access Token\u8fc7\u671f\u5904\u7406<\/p>\n<p>\u7531\u4e8eAccess Token\u7684\u6709\u6548\u671f\u4ec5\u4e3a60\u5206\u949f&#xff0c;\u5f53Access Token\u5931\u6548\u6216\u8005\u5373\u5c06\u5931\u6548\u65f6&#xff08;\u53ef\u901a\u8fc7REST API\u9519\u8bef\u7801\u5224\u65ad&#xff09;&#xff0c;\u53ef\u4ee5\u4f7f\u7528Refresh Token&#xff08;\u6709\u6548\u671f180\u5929&#xff09;\u901a\u8fc7\u5237\u65b0\u7528\u6237\u7ea7\u51ed\u8bc1\u63a5\u53e3\u5411\u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u5668\u8bf7\u6c42\u83b7\u53d6\u65b0\u7684Access Token\u3002<\/p>\n<p>\u8bf4\u660e<\/p>\n<p>\u5f53Access Token\u5931\u6548\u65f6&#xff0c;\u82e5\u5e94\u7528\u4e0d\u4f7f\u7528Refresh Token\u5411\u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u5668\u8bf7\u6c42\u83b7\u53d6\u65b0\u7684Access Token&#xff0c;\u8d26\u53f7\u7684\u6388\u6743\u4fe1\u606f\u5c06\u4f1a\u5931\u6548&#xff0c;\u5bfc\u81f4\u4f7f\u7528Access Token\u7684\u529f\u80fd\u90fd\u4f1a\u5931\u8d25\u3002<\/p>\n<p>\u5f53Access Token\u975e\u6b63\u5e38\u5931\u6548&#xff08;\u5982\u4fee\u6539\u5bc6\u7801\u3001\u9000\u51fa\u8d26\u53f7\u3001\u5220\u9664\u8bbe\u5907&#xff09;\u65f6&#xff0c;\u5e94\u7528\u53ef\u91cd\u65b0\u767b\u5f55\u6388\u6743\u83b7\u53d6Authorization Code&#xff0c;\u5411\u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u5668\u8bf7\u6c42\u83b7\u53d6\u65b0\u7684Access Token\u3002<\/p>\n<p>Refresh Token\u8fc7\u671f\u5904\u7406<\/p>\n<p>\u7531\u4e8eRefresh Token\u7684\u6709\u6548\u671f\u4e3a180\u5929&#xff0c;\u5f53Refresh Token\u5931\u6548\u540e&#xff08;\u53ef\u901a\u8fc7REST API\u9519\u8bef\u7801\u5224\u65ad&#xff09;&#xff0c;\u5e94\u7528\u670d\u52a1\u7aef\u9700\u8981\u901a\u77e5\u5ba2\u6237\u7aef&#xff0c;\u91cd\u65b0\u8c03\u7528\u6388\u6743\u63a5\u53e3&#xff0c;\u8bf7\u6c42\u7528\u6237\u91cd\u65b0\u6388\u6743\u3002<\/p>\n<p>\u5e94\u7528\u5728\u81ea\u5df1\u7684\u7528\u6237\u4f53\u7cfb\u901a\u8fc7\u67e5\u8be2\u83b7\u53d6\u7684UnionID\u5224\u65ad\u8be5\u7528\u6237\u662f\u5426\u5df2\u5173\u8054\u3002\u5982\u5df2\u5173\u8054&#xff0c;\u5219\u5b8c\u6210\u7528\u6237\u767b\u5f55&#xff1b;\u5982\u672a\u5173\u8054&#xff0c;\u5219\u521b\u5efa\u65b0\u7528\u6237&#xff0c;\u7ed1\u5b9aUnionID&#xff0c;\u5b8c\u6210\u7528\u6237\u767b\u5f55\u3002<\/p>\n<h5>\u626b\u7801\u6388\u6743\u767b\u5f55<\/h5>\n<h6>\u573a\u666f\u4ecb\u7ecd<\/h6>\n<p>\u5bf9\u4e8e\u5728\u7f3a\u4e4f\u4fbf\u6377\u89e6\u63a7\u754c\u9762\u6216\u8f93\u5165\u53d7\u9650\u7684\u8bbe\u5907\u4e0a\u767b\u5f55\u5e94\u7528\u7684\u573a\u666f&#xff0c;\u63a8\u8350\u4f7f\u7528\u626b\u7801\u6388\u6743\u767b\u5f55\u65b9\u5f0f\u63a5\u5165Account Kit\u3002\u7528\u6237\u4f7f\u7528\u5df2\u767b\u5f55\u534e\u4e3a\u8d26\u53f7\u7684\u8bbe\u5907&#xff08;\u4f8b\u5982&#xff1a;Phone\u3001Tablet\u7b49&#xff09;\u626b\u63cf\u5e94\u7528\u4e8c\u7ef4\u7801\u5e76\u5b8c\u6210\u6388\u6743\u540e&#xff0c;\u5e94\u7528\u5373\u53ef\u83b7\u53d6\u7528\u6237\u6807\u8bc6UnionID\/OpenID\u7b49\u4fe1\u606f&#xff0c;\u5b9e\u73b0\u626b\u7801\u6388\u6743\u767b\u5f55\u3002<\/p>\n<h6>\u4e1a\u52a1\u6d41\u7a0b<\/h6>\n<p>\u626b\u7801\u6388\u6743\u767b\u5f55\u7684\u6574\u4f53\u63a5\u5165\u6d41\u7a0b\u5982\u4e0b&#xff1a;<\/p>\n<p>\u6b65\u9aa4\u8bf4\u660e<\/p>\n<p>\u5c55\u793a\u4e8c\u7ef4\u7801\u9636\u6bb5&#xff08;\u5e8f\u53f71-5&#xff09;<\/p>\n<p>\u7528\u6237\u9009\u62e9\u534e\u4e3a\u8d26\u53f7\u626b\u7801\u6388\u6743\u65b9\u5f0f\u767b\u5f55&#xff0c;\u5e94\u7528\u8c03\u7528\u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u5668\u83b7\u53d6\u4e8c\u7ef4\u7801\u4fe1\u606f\u3002<\/p>\n<p>\u5e94\u7528\u6839\u636e\u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u5668\u8fd4\u56de\u7684\u4e8c\u7ef4\u7801\u4fe1\u606f\u751f\u6210\u4e8c\u7ef4\u7801\u56fe\u7247\u3002<\/p>\n<p>\u7b49\u5f85\u7528\u6237\u626b\u7801\u6388\u6743\u767b\u5f55\u9636\u6bb5&#xff08;\u5e8f\u53f76-9&#xff09;<\/p>\n<p>\u5e94\u7528\u5c06\u83b7\u53d6\u5230\u7684\u8bbe\u5907\u7801\u4f20\u7ed9\u5e94\u7528\u670d\u52a1\u7aef&#xff0c;\u5e94\u7528\u670d\u52a1\u7aef\u4f7f\u7528\u8bbe\u5907\u7801\u8f6e\u8be2\u626b\u7801\u6388\u6743\u767b\u5f55-\u83b7\u53d6\u7528\u6237\u7ea7\u51ed\u8bc1\u63a5\u53e3\u3002<\/p>\n<p>\u9488\u5bf9\u8f6e\u8be2\u626b\u7801\u6388\u6743\u767b\u5f55-\u83b7\u53d6\u7528\u6237\u7ea7\u51ed\u8bc1\u63a5\u53e3\u54cd\u5e94\u7684\u7ed3\u679c&#xff0c;\u5e94\u7528\u8bf7\u81ea\u884c\u8fdb\u884c\u5904\u7406\u3002<\/p>\n<p>\u7528\u6237\u626b\u7801\u6388\u6743\u767b\u5f55\u9636\u6bb5&#xff08;\u5e8f\u53f710-21&#xff09;<\/p>\n<p>\u7528\u6237\u4f7f\u7528\u5df2\u767b\u5f55\u534e\u4e3a\u8d26\u53f7\u7684\u8bbe\u5907&#xff08;\u4f8b\u5982&#xff1a;Phone\u3001Tablet\u7b49&#xff09;\u626b\u63cf\u5e94\u7528\u4e8c\u7ef4\u7801\u5e76\u5b8c\u6210\u6388\u6743\u3002\u6b64\u65f6\u5e94\u7528\u670d\u52a1\u7aef\u8f6e\u8be2\u626b\u7801\u6388\u6743\u767b\u5f55-\u83b7\u53d6\u7528\u6237\u7ea7\u51ed\u8bc1\u63a5\u53e3\u83b7\u53d6\u5230Access Token&#xff0c;\u518d\u4f7f\u7528Access Token\u8c03\u7528\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u63a5\u53e3\u83b7\u53d6\u7528\u6237UnionID\u3001OpenID\u7b49\u4fe1\u606f\u3002<\/p>\n<p>\u5e94\u7528\u670d\u52a1\u7aef\u5c06\u4e1a\u52a1\u767b\u5f55\u51ed\u8bc1SessionId\u3001UnionID\/OpenID\u4f20\u7ed9\u5e94\u7528&#xff0c;\u5e94\u7528\u83b7\u53d6\u5230UnionID\/OpenID\u53ef\u7528\u4e8e\u5224\u65ad\u534e\u4e3a\u8d26\u53f7\u662f\u5426\u767b\u5f55\u3002<\/p>\n<p>\u5e94\u7528\u5bf9\u7528\u6237\u6807\u8bc6UnionID\/OpenID\u3001\u4e1a\u52a1\u767b\u5f55\u51ed\u8bc1SessionId\u4fe1\u606f\u8fdb\u884c\u5b89\u5168\u8ba4\u8bc1\u540e\u5b8c\u6210\u626b\u7801\u6388\u6743\u767b\u5f55\u3002<\/p>\n<h6>\u63a5\u53e3\u8bf4\u660e<\/h6>\n<table>\n<tr>\u63a5\u53e3\u540d\u79f0\u63cf\u8ff0<\/tr>\n<tbody>\n<tr>\n<td>\u83b7\u53d6\u4e8c\u7ef4\u7801\u4fe1\u606f\u63a5\u53e3<\/td>\n<td>\u5e94\u7528\u901a\u8fc7\u8c03\u7528\u8be5\u63a5\u53e3\u83b7\u53d6\u4e8c\u7ef4\u7801\u4fe1\u606f\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u626b\u7801\u6388\u6743\u767b\u5f55-\u83b7\u53d6\u7528\u6237\u7ea7\u51ed\u8bc1\u63a5\u53e3<\/td>\n<td>\u901a\u8fc7\u8f6e\u8be2\u8be5\u63a5\u53e3&#xff0c;\u83b7\u53d6\u7528\u6237\u7ea7\u51ed\u8bc1\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u63a5\u53e3<\/td>\n<td>\u5728\u83b7\u53d6\u5230\u7528\u6237\u7ea7\u51ed\u8bc1\u540e&#xff0c;\u901a\u8fc7\u8be5\u63a5\u53e3\u83b7\u53d6\u7528\u6237UnionID\/OpenID\u7b49\u4fe1\u606f\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h6>\u5f00\u53d1\u6b65\u9aa4<\/h6>\n<h6>\u83b7\u53d6\u4e8c\u7ef4\u7801\u4fe1\u606f<\/h6>\n<p>\u5e94\u7528\u8c03\u7528\u534e\u4e3a\u8d26\u53f7\u7684\u83b7\u53d6\u4e8c\u7ef4\u7801\u4fe1\u606f\u63a5\u53e3\u83b7\u53d6\u4e8c\u7ef4\u7801\u4fe1\u606f\u3002<\/p>\n<p>\u8bf7\u6c42\u6d88\u606f\u793a\u4f8b<\/p>\n<p>\u8bf7\u901a\u8fc7POST\u65b9\u5f0f\u8c03\u7528&#xff0c;\u793a\u4f8b\u5982\u4e0b&#xff1a;<\/p>\n<p>POST \/oauth2\/v3\/device\/code HTTP\/1.1<br \/>\nHost: oauth-login.cloud.huawei.com<br \/>\nContent-Type: application\/x-www-form-urlencoded<\/p>\n<p>client_id&#061;&lt;client_id&gt;&amp;scope&#061;openid profile<\/p>\n<p>\u54cd\u5e94\u6d88\u606f\u793a\u4f8b<\/p>\n<p>HTTP\/1.1 200 OK<br \/>\nContent-Type: application\/json;charset&#061;utf-8<\/p>\n<p>{<br \/>\n    &#034;create_time&#034;: 1569813512,<br \/>\n    &#034;device_code&#034;: &#034;AgEAAN7qd*****U0TvQ&#034;,<br \/>\n    &#034;expire_in&#034;: 1800,<br \/>\n    &#034;interval&#034;: 3,<br \/>\n    &#034;scan_expire_in&#034;: 120,<br \/>\n    &#034;user_code&#034;: &#034;ABCDEFGH&#034;,<br \/>\n    &#034;verification_url&#034;: &#034;https:\/\/oauth-login1.cloud.huawei.com\/oauth2\/v3\/device&#034;<br \/>\n}<\/p>\n<p>\u8bf7\u6c42\u53c2\u6570\u3001\u54cd\u5e94\u53c2\u6570\u53ca\u9519\u8bef\u7801\u7b49\u4fe1\u606f\u8be6\u89c1\u83b7\u53d6\u4e8c\u7ef4\u7801\u4fe1\u606f\u63a5\u53e3\u3002<\/p>\n<h6>\u751f\u6210\u4e8c\u7ef4\u7801<\/h6>\n<p>\u5e94\u7528\u6839\u636e\u54cd\u5e94\u4e2d\u7684verification_url\u548cuser_code\u751f\u6210\u4e8c\u7ef4\u7801\u5e76\u5c55\u793a\u3002<\/p>\n<p>\u4e8c\u7ef4\u7801URL\u5185\u5bb9\u5982\u4e0b<\/p>\n<p>https:\/\/oauth-login1.cloud.huawei.com\/oauth2\/v3\/device?user_code&#061;&lt;user_code&gt;<\/p>\n<p>\u5e94\u7528\u53ef\u4ee5\u901a\u8fc7QRCode\u6765\u751f\u6210\u4e8c\u7ef4\u7801\u5e76\u5728\u5e94\u7528\u5185\u5c55\u793a&#xff0c;\u7b49\u5f85\u7528\u6237\u626b\u7801\u3002<\/p>\n<p>\u8bf4\u660e<\/p>\n<p>\u83b7\u53d6\u4e8c\u7ef4\u7801\u4fe1\u606f\u63a5\u53e3\u8fd4\u56de\u7684user_code\u5b58\u5728\u6709\u6548\u671f&#xff08;\u4ee5\u63a5\u53e3\u54cd\u5e94\u7ed3\u679c\u4e2d\u7684scan_expire_in\u5b57\u6bb5\u5b9e\u9645\u503c\u4e3a\u51c6&#xff09;&#xff0c;\u5982\u679c\u7528\u6237\u672a\u5728\u6b64\u65f6\u95f4\u5185\u626b\u7801&#xff0c;\u9700\u8981\u91cd\u65b0\u8c03\u7528\u83b7\u53d6\u4e8c\u7ef4\u7801\u4fe1\u606f\u63a5\u53e3\u751f\u6210\u65b0\u7684\u4e8c\u7ef4\u7801\u3002<\/p>\n<h6>\u8f6e\u8be2\u83b7\u53d6\u7528\u6237\u7ea7\u51ed\u8bc1<\/h6>\n<p>\u5e94\u7528\u670d\u52a1\u7aef\u8f6e\u8be2\u8c03\u7528\u626b\u7801\u6388\u6743\u767b\u5f55-\u83b7\u53d6\u7528\u6237\u7ea7\u51ed\u8bc1\u63a5\u53e3&#xff08;\u8f6e\u8be2\u95f4\u9694\u65f6\u95f4\u53ef\u53c2\u8003\u83b7\u53d6\u4e8c\u7ef4\u7801\u4fe1\u606f\u63a5\u53e3\u54cd\u5e94\u7ed3\u679c\u4e2d\u7684interval\u5b57\u6bb5\u503c&#xff09;&#xff0c;\u76f4\u5230\u8f6e\u8be2\u6b21\u6570\u8d85\u8fc7\u9650\u5236\u3001\u8bbe\u5907\u7801\u8d85\u8fc7\u6709\u6548\u671f\u6216\u6210\u529f\u83b7\u53d6Access Token\u4e3a\u6b62\u3002<\/p>\n<p>\u8bf7\u6c42\u6d88\u606f\u793a\u4f8b<\/p>\n<p>\u8bf7\u901a\u8fc7POST\u65b9\u5f0f\u8c03\u7528&#xff0c;\u793a\u4f8b\u5982\u4e0b&#xff1a;<\/p>\n<p>POST \/oauth2\/v3\/token HTTP\/1.1<br \/>\nHost: oauth-login.cloud.huawei.com<br \/>\nContent-Type: application\/x-www-form-urlencoded<\/p>\n<p>grant_type&#061;device_code&amp;code&#061;&lt;device_code&gt;&amp;client_id&#061;&lt;client_id&gt;&amp;client_secret&#061;&lt;client_secret&gt;<\/p>\n<p>\u54cd\u5e94\u6d88\u606f\u793a\u4f8b<\/p>\n<p>\u7528\u6237\u672a\u626b\u7801\u65f6<\/p>\n<p>HTTP\/1.1 400 Bad Request<br \/>\nContent-Type: application\/json<\/p>\n<p>{<br \/>\n    &#034;sub_error&#034;: 20411,<br \/>\n    &#034;error_description&#034;: &#034;user code not scan&#034;,<br \/>\n    &#034;error&#034;: 1101<br \/>\n}<\/p>\n<p>\u7528\u6237\u5df2\u626b\u7801\u5e76\u5b8c\u6210\u6388\u6743\u65f6<\/p>\n<p>HTTP\/1.1 200 OK<br \/>\nContent-Type: application\/json;charset&#061;utf-8<\/p>\n<p>{<br \/>\n    &#034;access_token&#034;: &#034;DgEAAN7qd*****U0TvQ\/eXpE4x&#043;gvhoYh5\/UuzL&#034;,<br \/>\n    &#034;refresh_token&#034;: &#034;DgECAL&#043;&#043;vCn******NQ\/UOL8&#043;wm0jJi&#043;o4NI793H&#034;,<br \/>\n    &#034;expires_in&#034;: 3600,<br \/>\n    &#034;id_token&#034;: &#034;eyJraW*****ifQ.eyJhdF9oYX*****Q2fQ.TT05lFYe*****vDwb_Gj1ccR59yyB2Ig&#034;,<br \/>\n    &#034;scope&#034;: &#034;openid profile&#034;,<br \/>\n    &#034;token_type&#034;: &#034;Bearer&#034;,<br \/>\n    &#034;open_id&#034;: &#034;AQAxrBzThFv*****lv9tV_4rMCc&#034;<br \/>\n}<\/p>\n<p>\u8bf7\u6c42\u53c2\u6570\u3001\u54cd\u5e94\u53c2\u6570\u53ca\u9519\u8bef\u7801\u7b49\u4fe1\u606f\u8be6\u89c1\u626b\u7801\u6388\u6743\u767b\u5f55-\u83b7\u53d6\u7528\u6237\u7ea7\u51ed\u8bc1\u63a5\u53e3\u3002<\/p>\n<p>\u8bf4\u660e<\/p>\n<p>\u83b7\u53d6\u4e8c\u7ef4\u7801\u4fe1\u606f\u63a5\u53e3\u8fd4\u56de\u7684device_code\u5b58\u5728\u6709\u6548\u671f&#xff08;\u4ee5\u63a5\u53e3\u54cd\u5e94\u7ed3\u679c\u4e2d\u7684expire_in\u5b57\u6bb5\u5b9e\u9645\u503c\u4e3a\u51c6&#xff09;&#xff0c;\u8d85\u65f6\u540e\u9700\u8981\u91cd\u65b0\u8c03\u7528\u83b7\u53d6\u4e8c\u7ef4\u7801\u4fe1\u606f\u63a5\u53e3\u751f\u6210\u65b0\u7684\u4e8c\u7ef4\u7801\u3002<\/p>\n<p>\u5e94\u7528\u670d\u52a1\u7aef\u5728\u8f6e\u8be2\u626b\u7801\u6388\u6743\u767b\u5f55-\u83b7\u53d6\u7528\u6237\u7ea7\u51ed\u8bc1\u63a5\u53e3\u65f6&#xff0c;\u540c\u4e00\u4e2a\u8bbe\u5907\u7801\u8f6e\u8be2\u6b21\u6570\u4e0d\u5f97\u8d85\u8fc7\u83b7\u53d6\u4e8c\u7ef4\u7801\u4fe1\u606f\u63a5\u53e3\u54cd\u5e94\u7ed3\u679c\u4e2d\u7684expire_in\/interval\u7684\u503c&#xff0c;\u8f6e\u8be2\u8d85\u8fc7\u9650\u5236\u540e\u8bf7\u6c42\u4f1a\u88ab\u62d2\u7edd&#xff0c;\u9700\u8981\u91cd\u65b0\u8c03\u7528\u83b7\u53d6\u4e8c\u7ef4\u7801\u4fe1\u606f\u63a5\u53e3\u751f\u6210\u65b0\u7684\u4e8c\u7ef4\u7801\u3002<\/p>\n<h6>\u7528\u6237\u626b\u7801\u6388\u6743\u767b\u5f55<\/h6>\n<p>\u7528\u6237\u4f7f\u7528\u5df2\u767b\u5f55\u534e\u4e3a\u8d26\u53f7\u7684\u8bbe\u5907&#xff08;\u4f8b\u5982&#xff1a;Phone\u3001Tablet\u7b49&#xff09;\u626b\u63cf\u5e94\u7528\u7684\u4e8c\u7ef4\u7801&#xff0c;\u5f39\u51fa\u6388\u6743\u9875\u9762&#xff0c;\u663e\u793a\u5e94\u7528\u540d\u79f0\u3001\u56fe\u6807\u53ca\u7533\u8bf7\u7684\u6743\u9650\u5217\u8868&#xff0c;\u7528\u6237\u70b9\u51fb\u5141\u8bb8\u540e\u5b8c\u6210\u6388\u6743\u6d41\u7a0b\u3002<\/p>\n<p>\u5728\u7528\u6237\u5b8c\u6210\u6388\u6743\u540e&#xff0c;\u6b64\u65f6\u5e94\u7528\u670d\u52a1\u7aef\u8f6e\u8be2\u626b\u7801\u6388\u6743\u767b\u5f55-\u83b7\u53d6\u7528\u6237\u7ea7\u51ed\u8bc1\u63a5\u53e3\u83b7\u53d6\u5230Access Token&#xff0c;\u518d\u4f7f\u7528Access Token\u8c03\u7528\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u63a5\u53e3\u83b7\u53d6\u7528\u6237UnionID\u3001OpenID\u7b49\u4fe1\u606f\u3002<\/p>\n<p>\u5e94\u7528\u670d\u52a1\u7aef\u5c06\u4e1a\u52a1\u767b\u5f55\u51ed\u8bc1SessionId\u3001UnionID\/OpenID\u4f20\u7ed9\u5e94\u7528&#xff0c;\u5e94\u7528\u83b7\u53d6\u5230UnionID\/OpenID\u53ef\u7528\u4e8e\u5224\u65ad\u534e\u4e3a\u8d26\u53f7\u662f\u5426\u767b\u5f55\u3002<\/p>\n<p>\u5e94\u7528\u5bf9\u7528\u6237\u6807\u8bc6UnionID\/OpenID\u3001\u4e1a\u52a1\u767b\u5f55\u51ed\u8bc1SessionId\u4fe1\u606f\u8fdb\u884c\u5b89\u5168\u8ba4\u8bc1\u540e\u5b8c\u6210\u626b\u7801\u6388\u6743\u767b\u5f55\u3002<\/p>\n<p>\u8bf4\u660e<\/p>\n<p>\u82e5Access Token\u8fc7\u671f&#xff0c;\u53ef\u4ee5\u4f7f\u7528Refresh Token\u8c03\u7528\u5237\u65b0\u7528\u6237\u7ea7\u51ed\u8bc1\u83b7\u53d6\u65b0\u7684Access Token\u3002<\/p>\n<h3>\u83b7\u53d6\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u4fe1\u606f<\/h3>\n<h4>\u6982\u8ff0<\/h4>\n<p>\u5f53\u5e94\u7528\u9700\u8981\u83b7\u53d6\u7528\u6237\u8eab\u4efd\u6807\u8bc6\u6216\u8005\u5b8c\u5584\u7528\u6237\u4e2a\u4eba\u8d44\u6599&#xff08;\u5934\u50cf\u6635\u79f0\u3001\u6536\u8d27\u5730\u5740\u3001\u53d1\u7968\u62ac\u5934&#xff09;\u65f6&#xff0c;\u6216\u9700\u8981\u83b7\u53d6\u7528\u6237\u98ce\u9669\u7b49\u7ea7\u5224\u65ad\u7528\u6237\u98ce\u9669\u65f6&#xff0c;\u53ef\u901a\u8fc7Account Kit\u63d0\u4f9b\u7684\u76f8\u5173\u80fd\u529b&#xff0c;\u5f15\u5bfc\u7528\u6237\u586b\u5199\u3001\u7ba1\u7406\u76f8\u5173\u4fe1\u606f\u5e76\u5b8c\u6210\u6388\u6743\u3002\u83b7\u53d6\u5934\u50cf\u6635\u79f0\u3001\u6536\u8d27\u5730\u5740\u3001\u53d1\u7968\u62ac\u5934\u7b49\u8be6\u7ec6\u63a5\u5165\u4f53\u9a8c\u53ef\u53c2\u8003Account Kit\u63d0\u4f9b\u7684SampleCode\u793a\u4f8b\u5de5\u7a0b\u3002<\/p>\n<p>\u5178\u578b\u573a\u666f&#xff1a;<\/p>\n<p>\u5e94\u7528\u9700\u8981\u5b8c\u5584\u7528\u6237\u5934\u50cf\u6635\u79f0\u4fe1\u606f&#xff0c;\u53c2\u89c1\u83b7\u53d6\u5934\u50cf\u6635\u79f0\u3002<\/p>\n<p>\u5e94\u7528\u63d0\u4f9b\u7684\u670d\u52a1\u4f9d\u8d56\u7528\u6237\u6536\u8d27\u5730\u5740&#xff0c;\u9700\u8981\u83b7\u53d6\u7528\u6237\u6536\u8d27\u5730\u5740&#xff0c;\u53c2\u89c1\u83b7\u53d6\u6536\u8d27\u5730\u5740\u3002<\/p>\n<p>\u5e94\u7528\u63d0\u4f9b\u7684\u670d\u52a1\u4f9d\u8d56\u7528\u6237\u53d1\u7968\u62ac\u5934\u4fe1\u606f&#xff0c;\u9700\u8981\u83b7\u53d6\u7528\u6237\u53d1\u7968\u62ac\u5934&#xff0c;\u53c2\u89c1\u83b7\u53d6\u53d1\u7968\u62ac\u5934\u3002<\/p>\n<p>\u5e94\u7528\u63d0\u4f9b\u7684\u670d\u52a1\u4f9d\u8d56\u7528\u6237\u98ce\u9669\u7b49\u7ea7\u4fe1\u606f&#xff0c;\u9700\u8981\u83b7\u53d6\u7528\u6237\u98ce\u9669\u7b49\u7ea7&#xff0c;\u53c2\u89c1\u83b7\u53d6\u98ce\u9669\u7b49\u7ea7\u3002<\/p>\n<p>\u5e94\u7528\u63d0\u4f9b\u7684\u670d\u52a1\u4f9d\u8d56\u7528\u6237\u624b\u673a\u53f7&#xff0c;\u9700\u8981\u83b7\u53d6\u7528\u6237\u624b\u673a\u53f7&#xff0c;\u53c2\u89c1\u83b7\u53d6\u624b\u673a\u53f7\u3002<\/p>\n<p>\u5e94\u7528\u63d0\u4f9b\u7684\u670d\u52a1\u4f9d\u8d56\u7528\u6237\u5b9e\u540d\u5e74\u9f84\u6bb5&#xff0c;\u9700\u8981\u83b7\u53d6\u7528\u6237\u5b9e\u540d\u5e74\u9f84\u6bb5\u4fe1\u606f&#xff0c;\u53c2\u89c1\u83b7\u53d6\u5b9e\u540d\u5e74\u9f84\u6bb5\u3002<\/p>\n<h4>\u83b7\u53d6\u5934\u50cf\u6635\u79f0<\/h4>\n<h5>\u573a\u666f\u4ecb\u7ecd<\/h5>\n<p>\u5f53\u5e94\u7528\u9700\u8981\u83b7\u53d6\u7528\u6237\u5934\u50cf\u6635\u79f0\u4fe1\u606f&#xff0c;\u53ef\u4f7f\u7528Account Kit\u63d0\u4f9b\u7684\u5934\u50cf\u6635\u79f0\u6388\u6743\u80fd\u529b&#xff0c;\u7528\u6237\u5141\u8bb8\u5e94\u7528\u83b7\u53d6\u5934\u50cf\u6635\u79f0\u540e&#xff0c;\u53ef\u5feb\u901f\u5b8c\u6210\u4e2a\u4eba\u4fe1\u606f\u586b\u5199\u3002\u4ee5\u4e0b\u5bf9Account Kit\u63d0\u4f9b\u7684\u5934\u50cf\u6635\u79f0\u6388\u6743\u80fd\u529b\u8fdb\u884c\u4ecb\u7ecd\u3002\u6b64\u5916&#xff0c;\u5f00\u53d1\u8005\u4e5f\u53ef\u901a\u8fc7\u573a\u666f\u5316\u63a7\u4ef6\u4e2d\u7684\u9009\u62e9\u5934\u50cfButton\u83b7\u53d6\u7528\u6237\u5934\u50cf\u3002<\/p>\n<p>\u56fe1 \u624b\u673a\u7aef\u83b7\u53d6\u5934\u50cf\u6635\u79f0&#xff08;\u8bf7\u4ee5\u5b9e\u9645\u6548\u679c\u4e3a\u51c6&#xff09;<\/p>\n<p>\u70b9\u51fb\u653e\u5927<\/p>\n<p>\u56fe2 Wearable\u8bbe\u5907\u83b7\u53d6\u5934\u50cf\u6635\u79f0&#xff08;\u8bf7\u4ee5\u5b9e\u9645\u6548\u679c\u4e3a\u51c6&#xff09;<\/p>\n<p>\u70b9\u51fb\u653e\u5927<\/p>\n<h5>\u7ea6\u675f\u4e0e\u9650\u5236<\/h5>\n<p>\u83b7\u53d6\u5934\u50cf\u6635\u79f0\u80fd\u529b\u652f\u6301Phone\u3001Tablet\u3001PC\/2in1\u8bbe\u5907\u3002\u5e76\u4e14\u4ece5.1.0(18)\u7248\u672c\u5f00\u59cb&#xff0c;\u65b0\u589e\u652f\u6301Wearable\u8bbe\u5907&#xff1b;\u4ece5.1.1(19)\u7248\u672c\u5f00\u59cb&#xff0c;\u65b0\u589e\u652f\u6301TV\u8bbe\u5907\u3002<\/p>\n<h5>\u4e1a\u52a1\u6d41\u7a0b<\/h5>\n<p>\u6d41\u7a0b\u8bf4\u660e&#xff1a;<\/p>\n<p>\u5e94\u7528\u4f20\u5bf9\u5e94scope\u8c03\u7528\u6388\u6743API\u8bf7\u6c42\u83b7\u53d6\u7528\u6237\u5934\u50cf\u6635\u79f0\u3002<\/p>\n<p>\u5982\u7528\u6237\u5df2\u7ed9\u5e94\u7528\u6388\u6743&#xff0c;\u5219\u5f00\u53d1\u8005\u80fd\u76f4\u63a5\u83b7\u53d6\u7528\u6237\u5934\u50cf\u6635\u79f0\u3002<\/p>\n<p>\u5982\u7528\u6237\u672a\u6388\u6743&#xff0c;\u5219\u6388\u6743\u8bf7\u6c42\u4f1a\u62c9\u8d77\u6388\u6743\u9875\u9762&#xff0c;\u5728\u7528\u6237\u786e\u8ba4\u6388\u6743\u540e&#xff0c;\u5f00\u53d1\u8005\u80fd\u83b7\u53d6\u5230\u7528\u6237\u5934\u50cf\u6635\u79f0\u3002<\/p>\n<p>\u83b7\u53d6\u5230\u5934\u50cfurl\u4fe1\u606f&#xff0c;\u5f00\u53d1\u8005\u53ef\u4ee5\u901a\u8fc7\u8be5url\u4e0b\u8f7d\u5e76\u4f7f\u7528\u7528\u6237\u5934\u50cf\u3002<\/p>\n<h5>\u63a5\u53e3\u8bf4\u660e<\/h5>\n<table>\n<tr>\u63a5\u53e3\u540d\u63cf\u8ff0<\/tr>\n<tbody>\n<tr>\n<td>createAuthorizationWithHuaweiIDRequest(): AuthorizationWithHuaweiIDRequest<\/td>\n<td>\u83b7\u53d6\u6388\u6743\u8bf7\u6c42\u5bf9\u8c61\u63a5\u53e3&#xff0c;\u901a\u8fc7\u5728AuthorizationWithHuaweiIDRequest\u5bf9\u8c61\u4e2d\u4f20\u5165\u5934\u50cf\u6635\u79f0\u7684scope&#xff1a;profile\u53caAuthorization Code\u7684permission&#xff1a;serviceauthcode&#xff0c;\u5373\u53ef\u5728\u6388\u6743\u7ed3\u679c\u4e2d\u83b7\u53d6\u5230\u7528\u6237\u5934\u50cf\u6635\u79f0\u548cAuthorization Code\u3002<\/td>\n<\/tr>\n<tr>\n<td>constructor(context?: common.Context)<\/td>\n<td>\u521b\u5efa\u6388\u6743\u8bf7\u6c42Controller\u3002<\/td>\n<\/tr>\n<tr>\n<td>executeRequest(request: AuthenticationRequest): Promise<\/td>\n<td>\u901a\u8fc7Promise\u65b9\u5f0f\u6267\u884c\u6388\u6743\u64cd\u4f5c\u3002\u5934\u50cf\u6635\u79f0&#xff0c;\u53ef\u4eceAuthenticationResponse\u7684\u5b50\u7c7bAuthorizationWithHuaweiIDResponse\u4e2d\u89e3\u6790&#xff0c;\u5177\u4f53\u89e3\u6790\u65b9\u6cd5\u8bf7\u53c2\u8003\u5ba2\u6237\u7aef\u5f00\u53d1\u7684\u793a\u4f8b\u4ee3\u7801\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u6ce8\u610f<\/p>\n<p>1.\u4e0a\u8ff0\u63a5\u53e3\u9700\u5728\u9875\u9762\u6216\u81ea\u5b9a\u4e49\u7ec4\u4ef6\u751f\u547d\u5468\u671f\u5185\u8c03\u7528\u3002<\/p>\n<p>2.\u672a\u8bbe\u7f6e\u6635\u79f0\u9ed8\u8ba4\u8fd4\u56de\u534e\u4e3a\u8d26\u53f7\u7ed1\u5b9a\u7684\u533f\u540d\u624b\u673a\u53f7\/\u90ae\u7bb1\u3002<\/p>\n<p>3.\u5f53\u7528\u6237\u66f4\u65b0\u5934\u50cf\u540e&#xff0c;\u539f\u7528\u6237\u5934\u50cf\u94fe\u63a5\u4f1a\u7acb\u5373\u5931\u6548\u3002\u4e3a\u786e\u4fdd\u5934\u50cf\u6b63\u5e38\u663e\u793a&#xff0c;\u5efa\u8bae\u5148\u5c06\u5934\u50cf\u4e0b\u8f7d\u4fdd\u5b58\u540e\u518d\u4f7f\u7528&#xff0c;\u907f\u514d\u56e0\u7528\u6237\u5934\u50cf\u94fe\u63a5\u5931\u6548\u800c\u5f71\u54cd\u4e1a\u52a1\u6d41\u7a0b\u3002<\/p>\n<h5>\u5f00\u53d1\u524d\u63d0<\/h5>\n<p>\u5728\u8fdb\u884c\u4ee3\u7801\u5f00\u53d1\u524d&#xff0c;\u8bf7\u786e\u4fdd\u5df2\u6309\u7167\u201c\u5f00\u53d1\u51c6\u5907\u201d\u7ae0\u8282\u4e2d\u7684\u6307\u5bfc\u5b8c\u6210\u914d\u7f6e\u7b7e\u540d\u548c\u6307\u7eb9\u3001\u914d\u7f6eClient ID\u3002\u6b64\u573a\u666f\u65e0\u9700\u7533\u8bf7\u8d26\u53f7\u6743\u9650\u3002<\/p>\n<p>\u6ce8\u610f<\/p>\n<p>\u82e5\u672a\u6b63\u786e\u914d\u7f6e\u516c\u94a5\u6307\u7eb9&#xff0c;\u5c06\u62a5\u95191001500001 \u5e94\u7528\u6307\u7eb9\u8bc1\u4e66\u6821\u9a8c\u5931\u8d25\u3002<\/p>\n<h5>\u5f00\u53d1\u6b65\u9aa4<\/h5>\n<h6>\u5ba2\u6237\u7aef\u5f00\u53d1<\/h6>\n<p>\u5bfc\u5165authentication\u6a21\u5757\u53ca\u76f8\u5173\u516c\u5171\u6a21\u5757\u3002<\/p>\n<p><span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> authentication <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.AccountKit&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> hilog <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.PerformanceAnalysisKit&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> util <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.ArkTS&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> BusinessError <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.BasicServicesKit&#039;<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>\u521b\u5efa\u6388\u6743\u8bf7\u6c42\u5e76\u8bbe\u7f6e\u53c2\u6570\u3002<\/p>\n<p><span class=\"token comment\">\/\/ \u521b\u5efa\u6388\u6743\u8bf7\u6c42&#xff0c;\u5e76\u8bbe\u7f6e\u53c2\u6570<\/span><br \/>\n<span class=\"token keyword\">const<\/span> authRequest <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">authentication<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">HuaweiIDProvider<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">createAuthorizationWithHuaweiIDRequest<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/ \u83b7\u53d6\u5934\u50cf\u6635\u79f0\u9700\u8981\u4f20\u5982\u4e0bscope<\/span><br \/>\nauthRequest<span class=\"token punctuation\">.<\/span>scopes <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;profile&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/ \u82e5\u5f00\u53d1\u8005\u9700\u8981\u8fdb\u884c\u670d\u52a1\u7aef\u5f00\u53d1\u4ee5\u83b7\u53d6\u5934\u50cf\u6635\u79f0&#xff0c;\u5219\u9700\u4f20\u5982\u4e0bpermission\u83b7\u53d6authorizationCode<\/span><br \/>\nauthRequest<span class=\"token punctuation\">.<\/span>permissions <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;serviceauthcode&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/ \u7528\u6237\u662f\u5426\u9700\u8981\u767b\u5f55\u6388\u6743&#xff0c;\u8be5\u503c\u4e3atrue\u4e14\u7528\u6237\u672a\u767b\u5f55\u6216\u672a\u6388\u6743\u65f6&#xff0c;\u4f1a\u62c9\u8d77\u7528\u6237\u767b\u5f55\u6216\u6388\u6743\u9875\u9762<\/span><br \/>\nauthRequest<span class=\"token punctuation\">.<\/span>forceAuthorization <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/ \u5efa\u8bae\u4f7f\u7528generateRandomUUID\u751f\u6210state&#xff0c;\u53ef\u7528\u4e8e\u4e00\u81f4\u6027\u6bd4\u5bf9&#xff0c;\u9632\u6b62\u8de8\u7ad9\u653b\u51fb<\/span><br \/>\nauthRequest<span class=\"token punctuation\">.<\/span>state <span class=\"token operator\">&#061;<\/span> util<span class=\"token punctuation\">.<\/span><span class=\"token function\">generateRandomUUID<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>\u8c03\u7528AuthenticationController\u5bf9\u8c61\u7684executeRequest\u65b9\u6cd5\u6267\u884c\u6388\u6743\u8bf7\u6c42&#xff0c;\u5e76\u5904\u7406\u6388\u6743\u7ed3\u679c&#xff0c;\u4ece\u6388\u6743\u7ed3\u679c\u4e2d\u89e3\u6790\u51fa\u5934\u50cf\u6635\u79f0\u548cAuthorization Code\u3002<\/p>\n<p><span class=\"token comment\">\/\/ \u6267\u884c\u6388\u6743\u8bf7\u6c42<\/span><br \/>\n<span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u6b64\u793a\u4f8b\u4e3a\u4ee3\u7801\u7247\u6bb5&#xff0c;\u5b9e\u9645\u9700\u5728\u81ea\u5b9a\u4e49\u7ec4\u4ef6\u5b9e\u4f8b\u4e2d\u4f7f\u7528&#xff0c;\u5e76\u4f20\u5165\u6709\u6548\u7684Context\u4e0a\u4e0b\u6587\u5bf9\u8c61<\/span><br \/>\n  <span class=\"token keyword\">const<\/span> controller <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">authentication<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">AuthenticationController<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getUIContext<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getHostContext<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  controller<span class=\"token punctuation\">.<\/span><span class=\"token function\">executeRequest<\/span><span class=\"token punctuation\">(<\/span>authRequest<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">then<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>data<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> authorizationWithHuaweiIDResponse <span class=\"token operator\">&#061;<\/span> data <span class=\"token keyword\">as<\/span> authentication<span class=\"token punctuation\">.<\/span>AuthorizationWithHuaweiIDResponse<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> state <span class=\"token operator\">&#061;<\/span> authorizationWithHuaweiIDResponse<span class=\"token operator\">?.<\/span>state<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ state\u4e3a\u7a7a\u65f6&#xff0c;\u5f52\u4e00\u5316\u5904\u7406\u4e3a\u7a7a\u5b57\u7b26\u4e32<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> normalizedRequestState <span class=\"token operator\">&#061;<\/span> authRequest<span class=\"token punctuation\">.<\/span>state <span class=\"token operator\">||<\/span> <span class=\"token string\">&#039;&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> normalizedState <span class=\"token operator\">&#061;<\/span> state <span class=\"token operator\">||<\/span> <span class=\"token string\">&#039;&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>normalizedRequestState <span class=\"token operator\">!&#061;&#061;<\/span> normalizedState<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;testTag&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">Failed to authorize. The state is different, response state: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>state<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token keyword\">return<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;testTag&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;Succeeded in authentication.&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> authorizationWithHuaweiIDCredential <span class=\"token operator\">&#061;<\/span> authorizationWithHuaweiIDResponse<span class=\"token operator\">?.<\/span>data<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> avatarUri <span class=\"token operator\">&#061;<\/span> authorizationWithHuaweiIDCredential<span class=\"token operator\">?.<\/span>avatarUri<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> nickName <span class=\"token operator\">&#061;<\/span> authorizationWithHuaweiIDCredential<span class=\"token operator\">?.<\/span>nickName<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u5f00\u53d1\u8005\u5904\u7406avatarUri, nickName<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> authorizationCode <span class=\"token operator\">&#061;<\/span> authorizationWithHuaweiIDCredential<span class=\"token operator\">?.<\/span>authorizationCode<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u6d89\u53ca\u670d\u52a1\u7aef\u5f00\u53d1\u4ee5\u83b7\u53d6\u5934\u50cf\u6635\u79f0\u573a\u666f&#xff0c;\u5f00\u53d1\u8005\u5904\u7406authorizationCode<\/span><br \/>\n    <span class=\"token comment\">\/\/ &#8230;<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">catch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>err<span class=\"token operator\">:<\/span> BusinessError<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ &#8230;<\/span><br \/>\n    <span class=\"token function\">dealAllError<\/span><span class=\"token punctuation\">(<\/span>err<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">catch<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token function\">dealAllError<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u9519\u8bef\u5904\u7406<\/span><br \/>\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">dealAllError<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token operator\">:<\/span> BusinessError<span class=\"token punctuation\">)<\/span><span class=\"token operator\">:<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;testTag&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">Failed to obtain userInfo. Code: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>error<span class=\"token punctuation\">.<\/span>code<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token string\">, message: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>error<span class=\"token punctuation\">.<\/span>message<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u5728\u5e94\u7528\u83b7\u53d6\u5934\u50cf\u6635\u79f0\u573a\u666f\u4e0b&#xff0c;\u6d89\u53caUI\u4ea4\u4e92\u65f6&#xff0c;\u5efa\u8bae\u6309\u7167\u5982\u4e0b\u9519\u8bef\u7801\u6307\u5bfc\u63d0\u793a\u7528\u6237<\/span><br \/>\n  <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_LOGIN_OUT<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u7528\u6237\u672a\u767b\u5f55\u534e\u4e3a\u8d26\u53f7&#xff0c;\u8bf7\u767b\u5f55\u534e\u4e3a\u8d26\u53f7\u5e76\u91cd\u8bd5<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_NETWORK_ERROR<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u7f51\u7edc\u9519\u8bef&#xff0c;\u8bf7\u68c0\u67e5\u5f53\u524d\u7f51\u7edc\u72b6\u6001\u5e76\u91cd\u8bd5<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_USER_CANCEL<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u7528\u6237\u53d6\u6d88\u6388\u6743<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_SYSTEM_SERVICE<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u7cfb\u7edf\u670d\u52a1\u5f02\u5e38&#xff0c;\u8bf7\u7a0d\u540e\u91cd\u8bd5<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_REQUEST_REFUSE<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u91cd\u590d\u8bf7\u6c42&#xff0c;\u5e94\u7528\u65e0\u9700\u5904\u7406<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u83b7\u53d6\u7528\u6237\u4fe1\u606f\u5931\u8d25&#xff0c;\u8bf7\u7a0d\u540e\u91cd\u8bd5<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">export<\/span> <span class=\"token keyword\">enum<\/span> ErrorCode <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u8d26\u53f7\u672a\u767b\u5f55<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_LOGIN_OUT<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001502001<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u7f51\u7edc\u9519\u8bef<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_NETWORK_ERROR<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001502005<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u7528\u6237\u53d6\u6d88\u6388\u6743<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_USER_CANCEL<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001502012<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u7cfb\u7edf\u670d\u52a1\u5f02\u5e38<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_SYSTEM_SERVICE<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">12300001<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u91cd\u590d\u8bf7\u6c42<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_REQUEST_REFUSE<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001500002<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<h6>\u670d\u52a1\u7aef\u5f00\u53d1&#xff08;\u53ef\u9009&#xff09;<\/h6>\n<p>\u5f00\u53d1\u8005\u6839\u636e\u4e1a\u52a1\u9700\u8981\u9009\u62e9\u662f\u5426\u8fdb\u884c\u670d\u52a1\u7aef\u5f00\u53d1&#xff0c;\u5ba2\u6237\u7aef\u8fd4\u56de\u7684\u5934\u50cf\u6635\u79f0\u6570\u636e\u540c\u6b65\u5b58\u5728\u5ef6\u8fdf&#xff0c;\u5982\u679c\u5bf9\u5934\u50cf\u6635\u79f0\u65f6\u6548\u6027\u8981\u6c42\u8f83\u9ad8&#xff0c;\u5efa\u8bae\u901a\u8fc7\u670d\u52a1\u7aef\u83b7\u53d6\u3002<\/p>\n<p>\u5e94\u7528\u670d\u52a1\u7aef\u4f7f\u7528Client ID\u3001Client Secret\u3001Authorization Code\u8c03\u7528\u83b7\u53d6\u7528\u6237\u7ea7\u51ed\u8bc1\u63a5\u53e3\u5411\u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u5668\u8bf7\u6c42\u83b7\u53d6Access Token\u3001Refresh Token\u3002<\/p>\n<p>\u4f7f\u7528Access Token\u8c03\u7528\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u63a5\u53e3\u83b7\u53d6\u7528\u6237\u4fe1\u606f&#xff0c;\u4ece\u7528\u6237\u4fe1\u606f\u4e2d\u83b7\u53d6\u7528\u6237\u5934\u50cf\u6635\u79f0\u3002<\/p>\n<p>Access Token\u8fc7\u671f\u5904\u7406<\/p>\n<p>\u7531\u4e8eAccess Token\u7684\u6709\u6548\u671f\u4ec5\u4e3a60\u5206\u949f&#xff0c;\u5f53Access Token\u5931\u6548\u6216\u8005\u5373\u5c06\u5931\u6548\u65f6&#xff08;\u53ef\u901a\u8fc7REST API\u9519\u8bef\u7801\u5224\u65ad&#xff09;&#xff0c;\u53ef\u4ee5\u4f7f\u7528Refresh Token&#xff08;\u6709\u6548\u671f180\u5929&#xff09;\u901a\u8fc7\u5237\u65b0\u7528\u6237\u7ea7\u51ed\u8bc1\u63a5\u53e3\u5411\u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u5668\u8bf7\u6c42\u83b7\u53d6\u65b0\u7684Access Token\u3002<\/p>\n<p>\u8bf4\u660e<\/p>\n<p>\u5f53Access Token\u5931\u6548\u65f6&#xff0c;\u82e5\u60a8\u4e0d\u4f7f\u7528Refresh Token\u5411\u8d26\u53f7\u670d\u52a1\u5668\u8bf7\u6c42\u83b7\u53d6\u65b0\u7684Access Token&#xff0c;\u8d26\u53f7\u7684\u6388\u6743\u4fe1\u606f\u5c06\u4f1a\u5931\u6548&#xff0c;\u5bfc\u81f4\u4f7f\u7528Access Token\u7684\u529f\u80fd\u90fd\u4f1a\u5931\u8d25\u3002<\/p>\n<p>\u5f53Access Token\u975e\u6b63\u5e38\u5931\u6548&#xff08;\u5982\u4fee\u6539\u5bc6\u7801\u3001\u9000\u51fa\u8d26\u53f7\u3001\u5220\u9664\u8bbe\u5907&#xff09;\u65f6&#xff0c;\u4e1a\u52a1\u53ef\u91cd\u65b0\u767b\u5f55\u6388\u6743\u83b7\u53d6Authorization Code&#xff0c;\u5411\u8d26\u53f7\u670d\u52a1\u5668\u8bf7\u6c42\u83b7\u53d6\u65b0\u7684Access Token\u3002<\/p>\n<p>Refresh Token\u8fc7\u671f\u5904\u7406<\/p>\n<p>\u7531\u4e8eRefresh Token\u7684\u6709\u6548\u671f\u4e3a180\u5929&#xff0c;\u5f53Refresh Token\u5931\u6548\u540e&#xff08;\u53ef\u901a\u8fc7REST API\u9519\u8bef\u7801\u5224\u65ad&#xff09;&#xff0c;\u5e94\u7528\u670d\u52a1\u7aef\u9700\u8981\u901a\u77e5\u5ba2\u6237\u7aef&#xff0c;\u91cd\u65b0\u8c03\u7528\u6388\u6743\u63a5\u53e3&#xff0c;\u8bf7\u6c42\u7528\u6237\u91cd\u65b0\u6388\u6743\u3002<\/p>\n<h4>\u83b7\u53d6\u624b\u673a\u53f7<\/h4>\n<h5>\u573a\u666f\u4ecb\u7ecd<\/h5>\n<p>\u5f53\u5e94\u7528\u9700\u8981\u83b7\u53d6\u7528\u6237\u624b\u673a\u53f7\u65f6&#xff0c;\u53ef\u4f7f\u7528Account Kit\u63d0\u4f9b\u7684\u624b\u673a\u53f7\u6388\u6743\u80fd\u529b&#xff0c;\u5411\u7528\u6237\u53d1\u8d77\u624b\u673a\u53f7\u6388\u6743\u7533\u8bf7&#xff0c;\u7ecf\u7528\u6237\u540c\u610f\u6388\u6743\u540e&#xff0c;\u83b7\u53d6\u5230\u624b\u673a\u53f7\u5e76\u4e3a\u7528\u6237\u63d0\u4f9b\u76f8\u5e94\u670d\u52a1\u3002\u4ee5\u4e0b\u5bf9Account Kit\u63d0\u4f9b\u7684\u624b\u673a\u53f7\u6388\u6743\u80fd\u529b\u8fdb\u884c\u4ecb\u7ecd&#xff0c;\u83b7\u53d6\u624b\u673a\u53f7\u529f\u80fd\u8fd8\u53ef\u4f7f\u7528\u573a\u666f\u5316\u63a7\u4ef6\u5feb\u901f\u9a8c\u8bc1\u624b\u673a\u53f7Button\u8fdb\u884c\u5b9e\u73b0\u3002<\/p>\n<p>\u8bf4\u660e<\/p>\n<p>\u5bf9\u7528\u6237\u9009\u62e9\u7684\u534e\u4e3a\u8d26\u53f7\u7ed1\u5b9a\u7684\u624b\u673a\u53f7\u6216\u8005\u65b0\u589e\u7684\u624b\u673a\u53f7\u8fdb\u884c\u9a8c\u8bc1&#xff0c;\u4e0d\u4fdd\u8bc1\u662f\u5b9e\u65f6\u7684\u9a8c\u8bc1&#xff0c;\u4ec5\u9996\u6b21\u9700\u8981\u7528\u6237\u6388\u6743\u3002<\/p>\n<p>\u5728\u5e94\u7528\u8d26\u53f7\u5df2\u767b\u5f55\u5e76\u7ed1\u5b9a\u7528\u6237\u534e\u4e3a\u8d26\u53f7UnionID\u7684\u60c5\u51b5\u4e0b&#xff0c;\u5e94\u7528\u53ef\u4ee5\u5728\u83b7\u53d6\u624b\u673a\u53f7\u7b49\u7528\u6237\u4fe1\u606f\u65f6\u6839\u636e\u5b9e\u9645\u4e1a\u52a1\u573a\u666f\u5224\u65ad\u662f\u5426\u9700\u8981\u63d0\u524d\u6821\u9a8c\u5f53\u524d\u5e94\u7528\u8d26\u53f7\u7ed1\u5b9a\u7684UnionID\u4e0e\u7cfb\u7edf\u8d26\u53f7\u5f53\u524d\u7684UnionID\u662f\u5426\u4e00\u81f4\u3002<\/p>\n<p>\u56fe1 \u624b\u673a\u7aef\u83b7\u53d6\u624b\u673a\u53f7&#xff08;\u8bf7\u4ee5\u5b9e\u9645\u6548\u679c\u4e3a\u51c6&#xff09;<\/p>\n<p>\u70b9\u51fb\u653e\u5927<\/p>\n<p>\u56fe2 Wearable\u8bbe\u5907\u83b7\u53d6\u624b\u673a\u53f7&#xff08;\u8bf7\u4ee5\u5b9e\u9645\u6548\u679c\u4e3a\u51c6&#xff09;<\/p>\n<p>\u70b9\u51fb\u653e\u5927<\/p>\n<h5>\u7ea6\u675f\u4e0e\u9650\u5236<\/h5>\n<p>\u5e94\u7528\u6ee1\u8db3\u300a\u5e38\u89c1\u7c7b\u578b\u79fb\u52a8\u4e92\u8054\u7f51\u5e94\u7528\u7a0b\u5e8f\u5fc5\u8981\u4e2a\u4eba\u4fe1\u606f\u8303\u56f4\u89c4\u5b9a\u300b&#xff08;\u5bf9\u7b2c\u4e09\u65b9\u7f51\u7ad9\u7684\u5185\u5bb9&#xff0c;\u534e\u4e3a\u4e0d\u627f\u62c5\u4efb\u4f55\u8d23\u4efb&#xff09;\u4e2d\u4f7f\u7528\u624b\u673a\u53f7\u7684\u5fc5\u8981\u4e1a\u52a1\u573a\u666f\u3002<\/p>\n<p>\u513f\u7ae5\u8d26\u53f7\u65e0\u6cd5\u901a\u8fc7\u8be5\u80fd\u529b\u83b7\u53d6\u5230\u624b\u673a\u53f7\u3002<\/p>\n<p>\u83b7\u53d6\u624b\u673a\u53f7\u80fd\u529b\u652f\u6301Phone\u3001Tablet\u3001PC\/2in1\u8bbe\u5907\u3002\u5e76\u4e14\u4ece5.1.0(18)\u7248\u672c\u5f00\u59cb&#xff0c;\u65b0\u589e\u652f\u6301Wearable\u8bbe\u5907&#xff1b;\u4ece5.1.1(19)\u7248\u672c\u5f00\u59cb&#xff0c;\u65b0\u589e\u652f\u6301TV\u8bbe\u5907\u3002<\/p>\n<p>\u83b7\u53d6\u624b\u673a\u53f7\u80fd\u529b\u76ee\u524d\u4ec5\u652f\u6301\u6e38\u620f\u7c7b\u5e94\u7528\u7533\u8bf7\u4f7f\u7528\u3002<\/p>\n<h5>\u4e1a\u52a1\u6d41\u7a0b<\/h5>\n<p>\u6d41\u7a0b\u8bf4\u660e&#xff1a;<\/p>\n<p>\u5e94\u7528\u901a\u8fc7\u4f20\u5bf9\u5e94scope\u548cpermission\u8c03\u7528\u6388\u6743API&#xff0c;\u5982\u679c\u5df2\u6388\u6743\u5219\u76f4\u63a5\u8fd4\u56de\u4e34\u65f6\u767b\u5f55\u51ed\u8bc1Authorization Code&#xff1b;\u5982\u679c\u672a\u6388\u6743\u5219\u62c9\u8d77\u6388\u6743\u9875&#xff0c;\u5728\u7528\u6237\u786e\u8ba4\u6388\u6743\u540e&#xff0c;\u8fd4\u56deAuthorization Code\u3002<\/p>\n<p>\u5c06Authorization Code\u4f20\u7ed9\u5e94\u7528\u670d\u52a1\u7aef&#xff0c;\u4f7f\u7528Client ID\u3001Client Secret\u3001Authorization Code\u4ece\u534e\u4e3a\u670d\u52a1\u5668\u4e2d\u83b7\u53d6Access Token&#xff0c;\u518d\u4f7f\u7528Access Token\u8bf7\u6c42\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u3002<\/p>\n<p>\u4ece\u7528\u6237\u4fe1\u606f\u4e2d\u83b7\u53d6\u5230\u624b\u673a\u53f7\u3001UnionID\u3001OpenID\u3002<\/p>\n<h5>\u63a5\u53e3\u8bf4\u660e<\/h5>\n<table>\n<tr>\u63a5\u53e3\u540d\u63cf\u8ff0<\/tr>\n<tbody>\n<tr>\n<td>createAuthorizationWithHuaweiIDRequest(): AuthorizationWithHuaweiIDRequest<\/td>\n<td>\u83b7\u53d6\u6388\u6743\u63a5\u53e3&#xff0c;\u901a\u8fc7AuthorizationWithHuaweiIDRequest\u4f20\u5165\u8fd4\u56de\u624b\u673a\u53f7\u7684scope&#xff1a;phone\u53ca\u8fd4\u56deAuthorization Code\u7684permission&#xff1a;serviceauthcode&#xff0c;\u5373\u53ef\u83b7\u53d6\u5230Authorization Code\u3002<\/td>\n<\/tr>\n<tr>\n<td>constructor(context?: common.Context)<\/td>\n<td>\u521b\u5efa\u6388\u6743\u8bf7\u6c42Controller\u3002<\/td>\n<\/tr>\n<tr>\n<td>executeRequest(request: AuthenticationRequest): Promise<\/td>\n<td>\u901a\u8fc7Promise\u65b9\u5f0f\u6267\u884c\u6388\u6743\u64cd\u4f5c\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u6ce8\u610f<\/p>\n<p>\u4e0a\u8ff0\u63a5\u53e3\u9700\u5728\u9875\u9762\u6216\u81ea\u5b9a\u4e49\u7ec4\u4ef6\u751f\u547d\u5468\u671f\u5185\u8c03\u7528\u3002<\/p>\n<h5>\u5f00\u53d1\u524d\u63d0<\/h5>\n<p>\u5728\u8fdb\u884c\u4ee3\u7801\u5f00\u53d1\u524d&#xff0c;\u8bf7\u5148\u786e\u8ba4\u60a8\u5df2\u5b8c\u6210\u5f00\u53d1\u51c6\u5907\u5de5\u4f5c\u3002<\/p>\n<p>\u82e5\u672a\u914d\u7f6e\u7b7e\u540d\u548c\u6307\u7eb9&#xff0c;\u5c06\u62a5\u95191001500001 \u5e94\u7528\u6307\u7eb9\u8bc1\u4e66\u6821\u9a8c\u5931\u8d25\u3002<\/p>\n<p>\u82e5\u672a\u5b8c\u6210\u201c\u83b7\u53d6\u60a8\u7684\u624b\u673a\u53f7\u201d\u6743\u9650\u7533\u8bf7&#xff0c;\u5c06\u62a5\u95191001502014 \u5e94\u7528\u672a\u7533\u8bf7scopes\u6216permissions\u6743\u9650\u3002<\/p>\n<p>\u8bbe\u5907\u9700\u8981\u767b\u5f55\u534e\u4e3a\u8d26\u53f7&#xff0c;\u82e5\u672a\u767b\u5f55\u5219\u62c9\u8d77\u767b\u5f55\u9875\u9762\u3002<\/p>\n<h5>\u5f00\u53d1\u6b65\u9aa4<\/h5>\n<h6>\u5ba2\u6237\u7aef\u5f00\u53d1<\/h6>\n<p>\u5bfc\u5165authentication\u6a21\u5757\u53ca\u76f8\u5173\u516c\u5171\u6a21\u5757\u3002<\/p>\n<p><span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> authentication <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.AccountKit&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> hilog <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.PerformanceAnalysisKit&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> util <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.ArkTS&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> BusinessError <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.BasicServicesKit&#039;<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>\u521b\u5efa\u6388\u6743\u8bf7\u6c42\u5e76\u8bbe\u7f6e\u53c2\u6570\u3002<\/p>\n<p><span class=\"token comment\">\/\/ \u521b\u5efa\u6388\u6743\u8bf7\u6c42&#xff0c;\u5e76\u8bbe\u7f6e\u53c2\u6570<\/span><br \/>\n<span class=\"token keyword\">const<\/span> authRequest <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">authentication<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">HuaweiIDProvider<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">createAuthorizationWithHuaweiIDRequest<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/ \u83b7\u53d6\u624b\u673a\u53f7\u9700\u8981\u4f20\u5982\u4e0bscope&#xff0c;\u4f20\u53c2\u6570\u4e4b\u524d\u9700\u8981\u5148\u7533\u8bf7\u5bf9\u5e94scope\u6743\u9650&#xff0c;\u5426\u5219\u4f1a\u8fd4\u56de1001502014\u9519\u8bef\u7801<\/span><br \/>\nauthRequest<span class=\"token punctuation\">.<\/span>scopes <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;phone&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/ \u83b7\u53d6authorizationCode\u9700\u4f20\u5982\u4e0bpermission<\/span><br \/>\nauthRequest<span class=\"token punctuation\">.<\/span>permissions <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;serviceauthcode&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/ \u7528\u6237\u662f\u5426\u9700\u8981\u767b\u5f55\u6388\u6743&#xff0c;\u8be5\u503c\u4e3atrue\u4e14\u7528\u6237\u672a\u767b\u5f55\u6216\u672a\u6388\u6743\u65f6&#xff0c;\u4f1a\u62c9\u8d77\u7528\u6237\u767b\u5f55\u6216\u6388\u6743\u9875\u9762<\/span><br \/>\nauthRequest<span class=\"token punctuation\">.<\/span>forceAuthorization <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/ \u5efa\u8bae\u4f7f\u7528generateRandomUUID\u751f\u6210state&#xff0c;\u53ef\u7528\u4e8e\u4e00\u81f4\u6027\u6bd4\u5bf9&#xff0c;\u9632\u6b62\u8de8\u7ad9\u653b\u51fb<\/span><br \/>\nauthRequest<span class=\"token punctuation\">.<\/span>state <span class=\"token operator\">&#061;<\/span> util<span class=\"token punctuation\">.<\/span><span class=\"token function\">generateRandomUUID<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>\u8c03\u7528AuthenticationController\u5bf9\u8c61\u7684executeRequest\u65b9\u6cd5\u6267\u884c\u6388\u6743\u8bf7\u6c42&#xff0c;\u5e76\u5904\u7406\u6388\u6743\u7ed3\u679c&#xff0c;\u4ece\u6388\u6743\u7ed3\u679c\u4e2d\u89e3\u6790\u51faAuthorization Code&#xff0c;\u4e4b\u540e\u5c06Authorization Code\u4f20\u7ed9\u5e94\u7528\u670d\u52a1\u7aef\u5904\u7406\u3002<\/p>\n<p><span class=\"token comment\">\/\/ \u6267\u884c\u8bf7\u6c42<\/span><br \/>\n<span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u6b64\u793a\u4f8b\u4e3a\u4ee3\u7801\u7247\u6bb5&#xff0c;\u5b9e\u9645\u9700\u5728\u81ea\u5b9a\u4e49\u7ec4\u4ef6\u5b9e\u4f8b\u4e2d\u4f7f\u7528&#xff0c;\u5e76\u4f20\u5165\u6709\u6548\u7684Context\u4e0a\u4e0b\u6587\u5bf9\u8c61<\/span><br \/>\n  <span class=\"token keyword\">const<\/span> controller <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">authentication<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">AuthenticationController<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getUIContext<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getHostContext<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  controller<span class=\"token punctuation\">.<\/span><span class=\"token function\">executeRequest<\/span><span class=\"token punctuation\">(<\/span>authRequest<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">then<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>data<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> authorizationWithHuaweiIDResponse <span class=\"token operator\">&#061;<\/span> data <span class=\"token keyword\">as<\/span> authentication<span class=\"token punctuation\">.<\/span>AuthorizationWithHuaweiIDResponse<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> state <span class=\"token operator\">&#061;<\/span> authorizationWithHuaweiIDResponse<span class=\"token punctuation\">.<\/span>state<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ state\u4e3a\u7a7a\u65f6&#xff0c;\u5f52\u4e00\u5316\u5904\u7406\u4e3a\u7a7a\u5b57\u7b26\u4e32<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> normalizedRequestState <span class=\"token operator\">&#061;<\/span> authRequest<span class=\"token punctuation\">.<\/span>state <span class=\"token operator\">||<\/span> <span class=\"token string\">&#039;&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> normalizedState <span class=\"token operator\">&#061;<\/span> state <span class=\"token operator\">||<\/span> <span class=\"token string\">&#039;&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>normalizedRequestState <span class=\"token operator\">!&#061;&#061;<\/span> normalizedState<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;testTag&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">Failed to authorize. The state is different, response state: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>state<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token keyword\">return<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;testTag&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;Succeeded in authentication.&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> authorizationWithHuaweiIDCredential <span class=\"token operator\">&#061;<\/span> authorizationWithHuaweiIDResponse<span class=\"token operator\">?.<\/span>data<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> authorizationCode <span class=\"token operator\">&#061;<\/span> authorizationWithHuaweiIDCredential<span class=\"token operator\">?.<\/span>authorizationCode<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u5f00\u53d1\u8005\u5904\u7406authorizationCode<\/span><br \/>\n    <span class=\"token comment\">\/\/ &#8230;<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">catch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>err<span class=\"token operator\">:<\/span> BusinessError<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ &#8230;<\/span><br \/>\n    <span class=\"token function\">dealAllError<\/span><span class=\"token punctuation\">(<\/span>err<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">catch<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token function\">dealAllError<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u9519\u8bef\u5904\u7406<\/span><br \/>\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">dealAllError<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token operator\">:<\/span> BusinessError<span class=\"token punctuation\">)<\/span><span class=\"token operator\">:<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;testTag&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">Failed to obtain userInfo. Code: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>error<span class=\"token punctuation\">.<\/span>code<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token string\">, message: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>error<span class=\"token punctuation\">.<\/span>message<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u5728\u5e94\u7528\u83b7\u53d6\u624b\u673a\u53f7\u573a\u666f\u4e0b&#xff0c;\u6d89\u53caUI\u4ea4\u4e92\u65f6&#xff0c;\u5efa\u8bae\u6309\u7167\u5982\u4e0b\u9519\u8bef\u7801\u6307\u5bfc\u63d0\u793a\u7528\u6237<\/span><br \/>\n  <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_LOGIN_OUT<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u7528\u6237\u672a\u767b\u5f55\u534e\u4e3a\u8d26\u53f7&#xff0c;\u8bf7\u767b\u5f55\u534e\u4e3a\u8d26\u53f7\u5e76\u91cd\u8bd5<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_NETWORK_ERROR<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u7f51\u7edc\u9519\u8bef&#xff0c;\u8bf7\u68c0\u67e5\u5f53\u524d\u7f51\u7edc\u72b6\u6001\u5e76\u91cd\u8bd5<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_USER_CANCEL<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u7528\u6237\u53d6\u6d88\u6388\u6743<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_SYSTEM_SERVICE<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u7cfb\u7edf\u670d\u52a1\u5f02\u5e38&#xff0c;\u8bf7\u7a0d\u540e\u91cd\u8bd5<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">.<\/span>code <span class=\"token operator\">&#061;&#061;&#061;<\/span> ErrorCode<span class=\"token punctuation\">.<\/span><span class=\"token constant\">ERROR_CODE_REQUEST_REFUSE<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u91cd\u590d\u8bf7\u6c42&#xff0c;\u5e94\u7528\u65e0\u9700\u5904\u7406<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u83b7\u53d6\u7528\u6237\u4fe1\u606f\u5931\u8d25&#xff0c;\u8bf7\u5c1d\u8bd5\u4f7f\u7528\u5176\u4ed6\u65b9\u5f0f\u767b\u5f55<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">export<\/span> <span class=\"token keyword\">enum<\/span> ErrorCode <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u8d26\u53f7\u672a\u767b\u5f55<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_LOGIN_OUT<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001502001<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u7f51\u7edc\u9519\u8bef<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_NETWORK_ERROR<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001502005<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u7528\u6237\u53d6\u6d88\u6388\u6743<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_USER_CANCEL<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001502012<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u7cfb\u7edf\u670d\u52a1\u5f02\u5e38<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_SYSTEM_SERVICE<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">12300001<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u91cd\u590d\u8bf7\u6c42<\/span><br \/>\n  <span class=\"token constant\">ERROR_CODE_REQUEST_REFUSE<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1001500002<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<h6>\u670d\u52a1\u7aef\u5f00\u53d1<\/h6>\n<p>\u5e94\u7528\u670d\u52a1\u7aef\u4f7f\u7528Client ID\u3001Client Secret\u3001Authorization Code\u8c03\u7528\u83b7\u53d6\u7528\u6237\u7ea7\u51ed\u8bc1\u63a5\u53e3\u5411\u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u5668\u8bf7\u6c42\u83b7\u53d6Access Token\u3001Refresh Token\u3002<\/p>\n<p>\u4f7f\u7528Access Token\u8c03\u7528\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u63a5\u53e3\u83b7\u53d6\u7528\u6237\u4fe1\u606f&#xff0c;\u4ece\u7528\u6237\u4fe1\u606f\u4e2d\u83b7\u53d6\u7528\u6237\u624b\u673a\u53f7\u3001UnionID\u3001OpenID\u3002<\/p>\n<p>Access Token\u8fc7\u671f\u5904\u7406<\/p>\n<p>\u7531\u4e8eAccess Token\u7684\u6709\u6548\u671f\u4ec5\u4e3a60\u5206\u949f&#xff0c;\u5f53Access Token\u5931\u6548\u6216\u8005\u5373\u5c06\u5931\u6548\u65f6&#xff08;\u53ef\u901a\u8fc7REST API\u9519\u8bef\u7801\u5224\u65ad&#xff09;&#xff0c;\u53ef\u4ee5\u4f7f\u7528Refresh Token&#xff08;\u6709\u6548\u671f180\u5929&#xff09;\u901a\u8fc7\u5237\u65b0\u7528\u6237\u7ea7\u51ed\u8bc1\u63a5\u53e3\u5411\u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u5668\u8bf7\u6c42\u83b7\u53d6\u65b0\u7684Access Token\u3002<\/p>\n<p>\u8bf4\u660e<\/p>\n<p>\u5f53Access Token\u5931\u6548\u65f6&#xff0c;\u82e5\u60a8\u4e0d\u4f7f\u7528Refresh Token\u5411\u8d26\u53f7\u670d\u52a1\u5668\u8bf7\u6c42\u83b7\u53d6\u65b0\u7684Access Token&#xff0c;\u8d26\u53f7\u7684\u6388\u6743\u4fe1\u606f\u5c06\u4f1a\u5931\u6548&#xff0c;\u5bfc\u81f4\u4f7f\u7528Access Token\u7684\u529f\u80fd\u90fd\u4f1a\u5931\u8d25\u3002<\/p>\n<p>\u5f53Access Token\u975e\u6b63\u5e38\u5931\u6548&#xff08;\u5982\u4fee\u6539\u5bc6\u7801\u3001\u9000\u51fa\u8d26\u53f7\u3001\u5220\u9664\u8bbe\u5907&#xff09;\u65f6&#xff0c;\u4e1a\u52a1\u53ef\u91cd\u65b0\u767b\u5f55\u6388\u6743\u83b7\u53d6Authorization Code&#xff0c;\u5411\u8d26\u53f7\u670d\u52a1\u5668\u8bf7\u6c42\u83b7\u53d6\u65b0\u7684Access Token\u3002<\/p>\n<p>Refresh Token\u8fc7\u671f\u5904\u7406<\/p>\n<p>\u7531\u4e8eRefresh Token\u7684\u6709\u6548\u671f\u4e3a180\u5929&#xff0c;\u5f53Refresh Token\u5931\u6548\u540e&#xff08;\u53ef\u901a\u8fc7REST API\u9519\u8bef\u7801\u5224\u65ad&#xff09;&#xff0c;\u5e94\u7528\u670d\u52a1\u7aef\u9700\u8981\u901a\u77e5\u5ba2\u6237\u7aef&#xff0c;\u91cd\u65b0\u8c03\u7528\u6388\u6743\u63a5\u53e3&#xff0c;\u8bf7\u6c42\u7528\u6237\u91cd\u65b0\u6388\u6743\u3002<\/p>\n<h4>\u83b7\u53d6\u6536\u8d27\u5730\u5740<\/h4>\n<h5>\u573a\u666f\u4ecb\u7ecd<\/h5>\n<p>\u5f53\u5e94\u7528\u9700\u8981\u83b7\u53d6\u7528\u6237\u6536\u8d27\u5730\u5740\u65f6&#xff0c;\u53ef\u4f7f\u7528Account Kit\u63d0\u4f9b\u7684\u83b7\u53d6\u6536\u8d27\u5730\u5740\u7684\u80fd\u529b&#xff0c;\u5f15\u5bfc\u7528\u6237\u6dfb\u52a0\u6216\u9009\u62e9\u5df2\u6709\u7684\u6536\u8d27\u5730\u5740&#xff0c;\u5e76\u6700\u7ec8\u83b7\u53d6\u7528\u6237\u7684\u6536\u8d27\u5730\u5740\u3002\u4ee5\u4e0b\u5bf9Account Kit\u63d0\u4f9b\u7684\u83b7\u53d6\u6536\u8d27\u5730\u5740\u80fd\u529b\u8fdb\u884c\u4ecb\u7ecd&#xff0c;\u83b7\u53d6\u6536\u8d27\u5730\u5740\u529f\u80fd\u8fd8\u53ef\u4f7f\u7528\u573a\u666f\u5316\u63a7\u4ef6\u9009\u62e9\u6536\u8d27\u5730\u5740Button\u8fdb\u884c\u5b9e\u73b0\u3002<\/p>\n<p>\u70b9\u51fb\u653e\u5927<\/p>\n<h5>\u7ea6\u675f\u4e0e\u9650\u5236<\/h5>\n<p>\u6536\u8d27\u5730\u5740\u4e2d\u7684\u624b\u673a\u53f7\u4fe1\u606f\u4ec5\u652f\u6301\u8f93\u5165\u4e2d\u56fd\u5883\u5185&#xff08;\u9999\u6e2f\u7279\u522b\u884c\u653f\u533a\u3001\u6fb3\u95e8\u7279\u522b\u884c\u653f\u533a\u3001\u4e2d\u56fd\u53f0\u6e7e\u9664\u5916&#xff09;\u624b\u673a\u53f7\u3001\u5730\u5740\u4fe1\u606f\u53ea\u652f\u6301\u586b\u5199\u4e2d\u56fd\u5883\u5185&#xff08;\u9999\u6e2f\u7279\u522b\u884c\u653f\u533a\u3001\u6fb3\u95e8\u7279\u522b\u884c\u653f\u533a\u3001\u4e2d\u56fd\u53f0\u6e7e\u9664\u5916&#xff09;\u3002<\/p>\n<p>\u83b7\u53d6\u6536\u8d27\u5730\u5740\u7684\u80fd\u529b\u652f\u6301Phone\u3001Tablet\u3001PC\/2in1\u8bbe\u5907\u3002\u5e76\u4e14\u4ece26.0.0\u7248\u672c\u5f00\u59cb&#xff0c;\u65b0\u589e\u652f\u6301TV\u8bbe\u5907\u3002<\/p>\n<h5>\u4e1a\u52a1\u6d41\u7a0b<\/h5>\n<p>\u6d41\u7a0b\u8bf4\u660e&#xff1a;<\/p>\n<p>\u7528\u6237\u9700\u8981\u4f7f\u7528\u6536\u8d27\u5730\u5740\u65f6&#xff0c;\u5e94\u7528\u7a0b\u5e8f\u8c03\u7528\u9009\u62e9\u6536\u8d27\u5730\u5740API&#xff0c;\u6253\u5f00\u534e\u4e3a\u8d26\u53f7\u6536\u8d27\u5730\u5740\u7ba1\u7406\u9875\u9762\u3002<\/p>\n<p>\u7528\u6237\u53ef\u4ee5\u5728\u6536\u8d27\u5730\u5740\u7ba1\u7406\u9875\u9762\u6dfb\u52a0\u65b0\u7684\u6536\u8d27\u5730\u5740\u6216\u8005\u9009\u62e9\u5df2\u6709\u6536\u8d27\u5730\u5740&#xff0c;\u70b9\u51fb\u786e\u8ba4\u540e&#xff0c;\u9009\u62e9\u7684\u6536\u8d27\u5730\u5740\u5c06\u8fd4\u56de\u7ed9\u5e94\u7528\u3002<\/p>\n<h5>\u63a5\u53e3\u8bf4\u660e<\/h5>\n<table>\n<tr>\u63a5\u53e3\u540d\u63cf\u8ff0<\/tr>\n<tbody>\n<tr>\n<td>chooseAddress(context: common.Context): Promise<\/td>\n<td>\u62c9\u8d77\u6536\u8d27\u5730\u5740\u7ba1\u7406\u9875\u9762\u5e76\u8fd4\u56de\u7528\u6237\u6240\u9009\u62e9\u7684\u6536\u8d27\u5730\u5740\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u6ce8\u610f<\/p>\n<p>\u4e0a\u8ff0\u63a5\u53e3\u9700\u5728\u9875\u9762\u6216\u81ea\u5b9a\u4e49\u7ec4\u4ef6\u751f\u547d\u5468\u671f\u5185\u8c03\u7528\u3002<\/p>\n<h5>\u5f00\u53d1\u524d\u63d0<\/h5>\n<p>\u5728\u8fdb\u884c\u4ee3\u7801\u5f00\u53d1\u524d&#xff0c;\u8bf7\u5148\u786e\u8ba4\u4ee5\u4e0b\u51c6\u5907\u5de5\u4f5c\u662f\u5426\u5b8c\u6210&#xff1a;<\/p>\n<p>1\u3001\u662f\u5426\u5b8c\u6210\u7533\u8bf7\u8d26\u53f7\u6743\u9650&#xff0c;\u672a\u7533\u8bf7\u901a\u8fc7\u8c03\u7528\u83b7\u53d6\u6536\u8d27\u5730\u5740API&#xff0c;\u5c06\u8fd4\u56de1008100005 \u5e94\u7528\u672a\u7533\u8bf7\u5bf9\u5e94permissions\u6743\u9650\u9519\u8bef\u7801&#xff0c;\u65e0\u6cd5\u83b7\u53d6\u6536\u8d27\u5730\u5740\u3002<\/p>\n<p>\u8bf4\u660e<\/p>\n<p>\u5982\u679c\u5728\u6743\u9650\u7533\u8bf7\u524d\u5df2\u5b8c\u6210\u201c\u914d\u7f6e\u7b7e\u540d\u548c\u6307\u7eb9\u201d&#xff0c;\u5219\u9700\u8981\u91cd\u65b0\u7533\u8bf7\u8c03\u8bd5Profile&#xff0c;\u5e76\u91cd\u65b0\u624b\u52a8\u914d\u7f6e\u7b7e\u540d\u4fe1\u606f\u3002<\/p>\n<p>2\u3001\u662f\u5426\u5b8c\u6210\u914d\u7f6e\u7b7e\u540d\u548c\u6307\u7eb9\u3001\u914d\u7f6eClient ID&#xff0c;\u672a\u914d\u7f6e\u8c03\u7528\u83b7\u53d6\u6536\u8d27\u5730\u5740API&#xff0c;\u5c06\u8fd4\u56de 1008100004 \u5e94\u7528\u6307\u7eb9\u8bc1\u4e66\u6821\u9a8c\u5931\u8d25\u9519\u8bef\u7801&#xff0c;\u65e0\u6cd5\u83b7\u53d6\u6536\u8d27\u5730\u5740\u3002<\/p>\n<h5>\u5f00\u53d1\u6b65\u9aa4<\/h5>\n<p>\u5bfc\u5165shippingAddress\u6a21\u5757\u53ca\u76f8\u5173\u516c\u5171\u6a21\u5757\u3002<\/p>\n<p><span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> shippingAddress <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.AccountKit&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> hilog <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.PerformanceAnalysisKit&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> BusinessError <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.BasicServicesKit&#039;<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>\u8c03\u7528chooseAddress\u65b9\u6cd5\u6253\u5f00\u6536\u8d27\u5730\u5740\u7ba1\u7406\u9875\u9762&#xff0c;\u5f15\u5bfc\u7528\u6237\u6dfb\u52a0\u6216\u9009\u62e9\u6536\u8d27\u5730\u5740\u540e&#xff0c;\u5e94\u7528\u5373\u53ef\u83b7\u53d6\u7528\u6237\u6536\u8d27\u5730\u5740\u3002<\/p>\n<p><span class=\"token comment\">\/\/ \u6267\u884c\u8bf7\u6c42<\/span><br \/>\n<span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u6b64\u793a\u4f8b\u4e3a\u4ee3\u7801\u7247\u6bb5&#xff0c;\u5b9e\u9645\u9700\u5728\u81ea\u5b9a\u4e49\u7ec4\u4ef6\u5b9e\u4f8b\u4e2d\u4f7f\u7528&#xff0c;\u5e76\u4f20\u5165\u6709\u6548\u7684Context\u4e0a\u4e0b\u6587\u5bf9\u8c61<\/span><br \/>\n  shippingAddress<span class=\"token punctuation\">.<\/span><span class=\"token function\">chooseAddress<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getUIContext<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getHostContext<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token punctuation\">.<\/span><span class=\"token function\">then<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>data<span class=\"token operator\">:<\/span> shippingAddress<span class=\"token punctuation\">.<\/span>AddressInfo<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;testTag&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;Succeeded in choosing address.&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token keyword\">const<\/span> userName<span class=\"token operator\">:<\/span> <span class=\"token builtin\">string<\/span> <span class=\"token operator\">&#061;<\/span> data<span class=\"token punctuation\">.<\/span>userName<span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token keyword\">const<\/span> mobileNumber<span class=\"token operator\">:<\/span> <span class=\"token builtin\">string<\/span> <span class=\"token operator\">&#061;<\/span> data<span class=\"token punctuation\">.<\/span>mobileNumber<span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token keyword\">const<\/span> countryCode<span class=\"token operator\">:<\/span> <span class=\"token builtin\">string<\/span> <span class=\"token operator\">&#061;<\/span> data<span class=\"token punctuation\">.<\/span>countryCode<span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token keyword\">const<\/span> provinceName<span class=\"token operator\">:<\/span> <span class=\"token builtin\">string<\/span> <span class=\"token operator\">&#061;<\/span> data<span class=\"token punctuation\">.<\/span>provinceName<span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token keyword\">const<\/span> cityName<span class=\"token operator\">:<\/span> <span class=\"token builtin\">string<\/span> <span class=\"token operator\">&#061;<\/span> data<span class=\"token punctuation\">.<\/span>cityName<span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token keyword\">const<\/span> districtName<span class=\"token operator\">:<\/span> <span class=\"token builtin\">string<\/span> <span class=\"token operator\">&#061;<\/span> data<span class=\"token punctuation\">.<\/span>districtName<span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token keyword\">const<\/span> streetName<span class=\"token operator\">:<\/span> <span class=\"token builtin\">string<\/span> <span class=\"token operator\">&#061;<\/span> data<span class=\"token punctuation\">.<\/span>streetName<span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token keyword\">const<\/span> detailedAddress<span class=\"token operator\">:<\/span> <span class=\"token builtin\">string<\/span> <span class=\"token operator\">&#061;<\/span> data<span class=\"token punctuation\">.<\/span>detailedAddress<span class=\"token punctuation\">;<\/span><br \/>\n      <span class=\"token comment\">\/\/ \u5f00\u53d1\u8005\u5904\u7406\u83b7\u53d6\u7684\u6536\u8d27\u5730\u5740\u4fe1\u606f<\/span><br \/>\n      <span class=\"token comment\">\/\/ &#8230;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">catch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token operator\">:<\/span> BusinessError<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ &#8230;<\/span><br \/>\n    <span class=\"token function\">dealAllError<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">catch<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token comment\">\/\/ &#8230;<\/span><br \/>\n  <span class=\"token function\">dealAllError<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u9519\u8bef\u5904\u7406<\/span><br \/>\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">dealAllError<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token operator\">:<\/span> BusinessError<span class=\"token punctuation\">)<\/span><span class=\"token operator\">:<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x0000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;testTag&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">Failed to chooseAddress. Code: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>error<span class=\"token punctuation\">.<\/span>code<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token string\">, message: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>error<span class=\"token punctuation\">.<\/span>message<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<h4>\u83b7\u53d6\u53d1\u7968\u62ac\u5934<\/h4>\n<h5>\u573a\u666f\u4ecb\u7ecd<\/h5>\n<p>\u5f53\u5e94\u7528\u9700\u8981\u83b7\u53d6\u7528\u6237\u53d1\u7968\u62ac\u5934\u65f6&#xff0c;\u53ef\u4f7f\u7528Account Kit\u63d0\u4f9b\u7684\u53d1\u7968\u52a9\u624b\u80fd\u529b&#xff0c;\u6253\u5f00\u53d1\u7968\u62ac\u5934\u9009\u62e9\u9875\u9762&#xff0c;\u5e2e\u52a9\u7528\u6237\u5feb\u901f\u9009\u62e9\u6216\u7ba1\u7406\u53d1\u7968\u62ac\u5934\u3002\u4ee5\u4e0b\u5bf9Account Kit\u63d0\u4f9b\u7684\u53d1\u7968\u52a9\u624b\u80fd\u529b\u8fdb\u884c\u4ecb\u7ecd&#xff0c;\u83b7\u53d6\u53d1\u7968\u62ac\u5934\u529f\u80fd\u8fd8\u53ef\u4f7f\u7528\u573a\u666f\u5316\u63a7\u4ef6\u9009\u62e9\u53d1\u7968\u62ac\u5934Button\u8fdb\u884c\u5b9e\u73b0\u3002<\/p>\n<p>\u70b9\u51fb\u653e\u5927<\/p>\n<h5>\u7ea6\u675f\u4e0e\u9650\u5236<\/h5>\n<p>Wearable\u3001TV\u8bbe\u5907\u6682\u4e0d\u652f\u6301\u4f7f\u7528\u83b7\u53d6\u53d1\u7968\u62ac\u5934\u529f\u80fd\u3002<\/p>\n<h5>\u4e1a\u52a1\u6d41\u7a0b<\/h5>\n<p>\u6d41\u7a0b\u8bf4\u660e&#xff1a;<\/p>\n<p>\u7528\u6237\u9700\u8981\u4f7f\u7528\u53d1\u7968\u62ac\u5934\u65f6&#xff0c;\u5e94\u7528\u7a0b\u5e8f\u8c03\u7528\u9009\u62e9\u53d1\u7968\u62ac\u5934API&#xff0c;\u6253\u5f00\u534e\u4e3a\u8d26\u53f7\u53d1\u7968\u62ac\u5934\u9009\u62e9\u9875\u3002<\/p>\n<p>\u7528\u6237\u53ef\u4ee5\u5728\u53d1\u7968\u62ac\u5934\u9009\u62e9\u9875\u9009\u62e9\u5df2\u6709\u53d1\u7968\u62ac\u5934\u6216\u8005\u8df3\u8f6c\u5230\u53d1\u7968\u62ac\u5934\u7ba1\u7406\u9875\u8fdb\u884c\u589e\u52a0&#xff0c;\u70b9\u51fb\u786e\u8ba4\u540e\u53ef\u5c06\u9009\u62e9\u7684\u53d1\u7968\u62ac\u5934\u8fd4\u56de\u7ed9\u5e94\u7528\u3002<\/p>\n<h5>\u63a5\u53e3\u8bf4\u660e<\/h5>\n<table>\n<tr>\u63a5\u53e3\u540d\u63cf\u8ff0<\/tr>\n<tbody>\n<tr>\n<td>selectInvoiceTitle(context: common.Context): Promise<\/td>\n<td>\u8c03\u7528\u8be5\u65b9\u6cd5\u6253\u5f00\u53d1\u7968\u62ac\u5934\u9009\u62e9\u9875\u9762&#xff0c;\u4f7f\u7528Promise\u5f02\u6b65\u56de\u8c03\u8fd4\u56de\u9009\u62e9\u7684\u53d1\u7968\u62ac\u5934\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u6ce8\u610f<\/p>\n<p>\u4e0a\u8ff0\u63a5\u53e3\u9700\u5728\u9875\u9762\u6216\u81ea\u5b9a\u4e49\u7ec4\u4ef6\u751f\u547d\u5468\u671f\u5185\u8c03\u7528\u3002<\/p>\n<h5>\u5f00\u53d1\u524d\u63d0<\/h5>\n<p>\u5728\u8fdb\u884c\u4ee3\u7801\u5f00\u53d1\u524d&#xff0c;\u8bf7\u786e\u4fdd\u5df2\u6309\u7167\u201c\u5f00\u53d1\u51c6\u5907\u201d\u7ae0\u8282\u4e2d\u7684\u6307\u5bfc\u5b8c\u6210\u914d\u7f6e\u7b7e\u540d\u548c\u6307\u7eb9\u3001\u914d\u7f6eClient ID\u3002\u6b64\u573a\u666f\u65e0\u9700\u7533\u8bf7\u8d26\u53f7\u6743\u9650\u3002<\/p>\n<h5>\u5f00\u53d1\u6b65\u9aa4<\/h5>\n<p>\u5bfc\u5165invoiceAssistant\u6a21\u5757\u53ca\u76f8\u5173\u516c\u5171\u6a21\u5757\u3002<\/p>\n<p><span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> hilog <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.PerformanceAnalysisKit&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> invoiceAssistant <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.AccountKit&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> BusinessError <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;kit.BasicServicesKit&#039;<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>\u8c03\u7528selectInvoiceTitle\u65b9\u6cd5\u9009\u62e9\u53d1\u7968\u62ac\u5934\u9875\u9762\u3002<\/p>\n<p><span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token function\">canIUse<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;SystemCapability.HuaweiID.InvoiceAssistant&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    invoiceAssistant<span class=\"token punctuation\">.<\/span><span class=\"token function\">selectInvoiceTitle<\/span><span class=\"token punctuation\">(<\/span>context<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">then<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>data<span class=\"token operator\">:<\/span> invoiceAssistant<span class=\"token punctuation\">.<\/span>InvoiceTitle<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      <span class=\"token comment\">\/\/ &#8230;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">catch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>error<span class=\"token operator\">:<\/span> BusinessError<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span>domainId<span class=\"token punctuation\">,<\/span> logTag<span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">Failed to selectInvoiceTitle. BusinessError errCode: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>error<span class=\"token punctuation\">.<\/span>code<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token string\">, errMessage: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>error<span class=\"token punctuation\">.<\/span>message<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span>domainId<span class=\"token punctuation\">,<\/span> logTag<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;The API is not supported on this device.&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">catch<\/span> <span class=\"token punctuation\">(<\/span>error<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  hilog<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span>domainId<span class=\"token punctuation\">,<\/span> logTag<span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">Failed to selectInvoiceTitle. errCode: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>error<span class=\"token punctuation\">.<\/span>code<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token string\">, errMessage: <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>error<span class=\"token punctuation\">.<\/span>message<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<h4>\u83b7\u53d6\u98ce\u9669\u7b49\u7ea7<\/h4>\n<h5>\u6982\u8ff0<\/h5>\n<p>\u5f53\u5e94\u7528\u9700\u8981\u83b7\u53d6\u7528\u6237\u98ce\u9669\u7b49\u7ea7\u65f6&#xff0c;\u53ef\u4f7f\u7528Account Kit\u63d0\u4f9b\u7684\u83b7\u53d6\u7528\u6237\u98ce\u9669\u7b49\u7ea7\u80fd\u529b&#xff0c;\u7528\u4e8e\u4ee5\u4e0b\u6076\u610f\u573a\u666f\u8bc6\u522b&#xff1a;<\/p>\n<p>\u5e94\u7528\u767b\u5f55\u98ce\u63a7\u573a\u666f&#xff1a;\u5e94\u7528\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u5173\u8054\u767b\u5f55\u65f6&#xff0c;\u83b7\u53d6\u534e\u4e3a\u8d26\u53f7\u98ce\u9669\u7b49\u7ea7&#xff0c;\u5bf9\u9ad8\u98ce\u9669\u7b49\u7ea7\u8d26\u53f7\u8fdb\u884c\u98ce\u63a7&#xff0c;\u63d0\u5347\u5e94\u7528\u7684\u5b89\u5168\u7b49\u7ea7\u3002<\/p>\n<p>\u8425\u9500\u6d3b\u52a8\u53cd\u4f5c\u5f0a\u573a\u666f&#xff1a;\u5e94\u7528\u8425\u9500\u6d3b\u52a8\u671f\u95f4&#xff0c;\u5982\u8fdb\u884c\u5546\u6237\u8865\u8d34\u3001\u4f18\u60e0\u5238\u53d1\u653e\u7b49\u5546\u4e1a\u8425\u9500\u6d3b\u52a8\u65f6\u83b7\u53d6\u534e\u4e3a\u8d26\u53f7\u98ce\u9669\u7b49\u7ea7&#xff0c;\u534f\u52a9\u5f00\u53d1\u8005\u6709\u6548\u8bc6\u522b\u201c\u8585\u7f8a\u6bdb\u201d\u98ce\u9669&#xff1b;\u4fdd\u62a4\u8425\u9500\u8d44\u6e90\u5408\u7406\u4f7f\u7528&#xff0c;\u964d\u4f4e\u4e1a\u52a1\u5b89\u5168\u95ee\u9898\u7ed9\u8425\u9500\u65b9\u5e26\u6765\u7684\u635f\u5931&#xff0c;\u4e3a\u76f8\u5173\u6d3b\u52a8\u4fdd\u9a7e\u62a4\u822a\u3002<\/p>\n<p>Account Kit\u63d0\u4f9b\u7684\u98ce\u9669\u7b49\u7ea7\u5982\u4e0b&#xff1a;<\/p>\n<table>\n<tr>\u98ce\u9669\u7b49\u7ea7\u8bf4\u660e\u5efa\u8bae\u5904\u7f6e\u65b9\u6848<\/tr>\n<tbody>\n<tr>\n<td>0<\/td>\n<td>\u672a\u53d1\u73b0\u663e\u8457\u98ce\u9669\u9879\u3002\u4f8b\u5982\u901a\u8fc7\u5408\u6cd5\u9014\u5f84\u6ce8\u518c&#xff0c;\u6b63\u5e38\u4f7f\u7528\u534e\u4e3a\u624b\u673a&#xff0c;\u65e0\u6279\u91cf\u64cd\u4f5c\u3001\u4f7f\u7528\u81ea\u52a8\u673a\u3001\u517b\u53f7\u7b49\u5f02\u5e38\u884c\u4e3a\u3002<\/td>\n<td>\u5efa\u8bae\u786e\u8ba4\u65e0\u98ce\u9669\u540e\u653e\u901a\u3002<\/td>\n<\/tr>\n<tr>\n<td>1<\/td>\n<td>\u4f4e\u98ce\u9669\u3002\u53d1\u73b0\u98ce\u9669\u56e0\u7d20&#xff0c;\u7ed3\u5408\u603b\u4f53\u8bc4\u5206\u540e\u98ce\u9669\u8f83\u4f4e\u3002<\/td>\n<td>\u5efa\u8bae\u8fdb\u884c\u7b80\u5355\u9a8c\u8bc1&#xff08;\u5982\u9a8c\u8bc1\u7801\u3001\u77ed\u4fe1\u7b49&#xff09;&#xff0c;\u6216\u4eba\u5de5\u5ba1\u6838\u3002<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>\u4e2d\u98ce\u9669\u3002\u53d1\u73b0\u98ce\u9669\u56e0\u7d20&#xff0c;\u7ed3\u5408\u603b\u4f53\u8bc4\u5206\u540e\u98ce\u9669\u4e2d\u7b49\u3002<\/td>\n<td>\u5efa\u8bae\u6839\u636e\u4e1a\u52a1\u573a\u666f\u91c7\u53d6\u4e00\u5b9a\u63aa\u65bd\u89c4\u907f\u4f24\u5bb3\u3002\u4f8b\u5982&#xff0c;\u8425\u9500\u6d3b\u52a8\u53ef\u964d\u4f4e\u9ad8\u7b49\u7ea7\u5956\u52b1\u7684\u6982\u7387\u3001\u6253\u699c\u7c7b\u6d3b\u52a8\u5bf9\u6b64\u7c7b\u6295\u7968\u964d\u4f4e\u6743\u91cd\u3001\u767b\u5f55\u6ce8\u518c\u8981\u6c42\u4e8c\u6b21\u9a8c\u8bc1\u7b49\u3002<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>\u9ad8\u98ce\u9669\u3002\u53d1\u73b0\u98ce\u9669\u56e0\u7d20&#xff0c;\u7ed3\u5408\u603b\u4f53\u8bc4\u5206\u540e\u98ce\u9669\u8f83\u9ad8\u3002<\/td>\n<td>\u5efa\u8bae\u4e1a\u52a1\u903b\u8f91\u76f4\u63a5\u62e6\u622a\u3002\u4f8b\u5982&#xff0c;\u7ea2\u5305\u7c7b\u6d3b\u52a8\u8fd4\u56de\u4e0d\u4e2d\u5956\u6216\u6700\u5c0f\u989d\u7ea2\u5305\u3001\u6253\u699c\u7c7b\u6d3b\u52a8\u4e0d\u8ba1\u7b97\u7968\u6570\u3001\u767b\u5f55\/\u6ce8\u518c\u64cd\u4f5c\u8981\u6c42\u4e8c\u6b21\u9a8c\u8bc1\u3001\u9ad8\u5371\u4e1a\u52a1\u53ef\u9009\u62e9\u9650\u5236\u672c\u6b21\u64cd\u4f5c\u3002<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>\u98ce\u9669\u672a\u77e5\u3002\u6682\u65e0\u660e\u786e\u98ce\u9669\u7b49\u7ea7\u3002<\/td>\n<td>\u5efa\u8bae\u7ed3\u5408\u8d26\u53f7\u5386\u53f2\u884c\u4e3a\u53ca\u4e1a\u52a1\u573a\u666f\u505a\u51fa\u6700\u7ec8\u51b3\u7b56\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h5>\u901a\u8fc7\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u83b7\u53d6\u7528\u6237\u98ce\u9669\u7b49\u7ea7<\/h5>\n<h6>\u573a\u666f\u4ecb\u7ecd<\/h6>\n<p>\u5e94\u7528\u767b\u5f55\u98ce\u63a7\u573a\u666f&#xff0c;\u53ef\u4ee5\u901a\u8fc7\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u83b7\u53d6\u7528\u6237\u98ce\u9669\u7b49\u7ea7&#xff0c;\u5bf9\u6076\u610f\u8d26\u53f7\u8fdb\u884c\u98ce\u63a7&#xff0c;\u63d0\u5347\u5e94\u7528\u7684\u5b89\u5168\u7b49\u7ea7\u3002<\/p>\n<h6>\u7ea6\u675f\u4e0e\u9650\u5236<\/h6>\n<p>\u901a\u8fc7\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u83b7\u53d6\u7528\u6237\u98ce\u9669\u7b49\u7ea7\u80fd\u529b\u652f\u6301Phone\u3001Tablet\u3001PC\/2in1\u8bbe\u5907\u3002\u5e76\u4e14\u4ece5.1.1(19)\u7248\u672c\u5f00\u59cb&#xff0c;\u65b0\u589e\u652f\u6301TV\u8bbe\u5907\u3002<\/p>\n<h6>\u4e1a\u52a1\u6d41\u7a0b<\/h6>\n<p>\u56fe1 \u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55&#xff08;\u7528\u6237\u9996\u6b21\u767b\u5f55\u5e94\u7528&#xff09;\u83b7\u53d6\u534e\u4e3a\u8d26\u53f7\u98ce\u9669\u7b49\u7ea7\u6d41\u7a0b\u56fe<\/p>\n<p>\u53c2\u8003\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u4e1a\u52a1\u6d41\u7a0b&#xff0c;\u786e\u4fdd\u7cfb\u7edf\u8d26\u53f7\u5df2\u767b\u5f55&#xff0c;\u533f\u540d\u624b\u673a\u53f7\u83b7\u53d6\u6210\u529f&#xff0c;\u4e14\u7528\u6237\u9996\u6b21\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u5e94\u7528\u3002&#xff08;\u5982\u7528\u6237\u975e\u9996\u6b21\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u767b\u5f55&#xff0c;\u53ef\u901a\u8fc7\u534e\u4e3a\u8d26\u53f7\u5176\u4ed6\u65b9\u5f0f\u767b\u5f55\u83b7\u53d6\u7528\u6237\u98ce\u9669\u7b49\u7ea7\u6765\u67e5\u8be2\u534e\u4e3a\u8d26\u53f7\u7684\u98ce\u9669\u7b49\u7ea7&#xff09;<\/p>\n<p>\u8c03\u7528LoginWithHuaweiIDButton\u7ec4\u4ef6&#xff0c;\u5728LoginWithHuaweiIDButtonParams\u53c2\u6570\u4e2d\u8bbe\u7f6e\u98ce\u9669\u7b49\u7ea7\u5b57\u6bb5\u6807\u8bc6riskLevel&#xff0c;\u62c9\u8d77\u5e94\u7528\u767b\u5f55\u9875\u3002<\/p>\n<p>\u7528\u6237\u540c\u610f\u534f\u8bae\u540e&#xff0c;\u70b9\u51fb\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u6309\u94ae&#xff0c;\u5e94\u7528\u53ef\u4ee5\u901a\u8fc7HuaweiIDCredential\u83b7\u53d6\u5230Authorization Code\u7b49\u6570\u636e\u3002<\/p>\n<p>\u5c06\u83b7\u53d6\u7684Authorization Code\u6570\u636e\u4f20\u7ed9\u5e94\u7528\u670d\u52a1\u7aef&#xff0c;\u5e94\u7528\u670d\u52a1\u7aef\u901a\u8fc7\u8c03\u7528\u83b7\u53d6\u7528\u6237\u98ce\u9669\u7b49\u7ea7\u63a5\u53e3\u67e5\u8be2\u5f53\u524d\u767b\u5f55\u7528\u6237\u7684\u534e\u4e3a\u8d26\u53f7\u98ce\u9669\u7b49\u7ea7\u3002<\/p>\n<p>\u5e94\u7528\u57fa\u4e8e\u7528\u6237\u98ce\u9669\u7b49\u7ea7\u5224\u65ad\u7ee7\u7eed\u767b\u5f55\u6d41\u7a0b\u6216\u8005\u8fd4\u56de\u5bf9\u5e94\u98ce\u63a7\u63aa\u65bd\u3002<\/p>\n<h6>\u63a5\u53e3\u8bf4\u660e<\/h6>\n<p>\u4e00\u952e\u767b\u5f55\u63a5\u53e3\u9075\u5faa\u534e\u4e3a\u8d26\u53f7\u4e00\u952e\u767b\u5f55\u63a5\u53e3\u8bf4\u660e&#xff0c;\u5f53\u5e94\u7528\u9700\u8981\u83b7\u53d6\u7528\u6237\u98ce\u9669\u7b49\u7ea7\u65f6&#xff0c;\u5728LoginWithHuaweiIDButton\u7ec4\u4ef6\u53c2\u6570LoginWithHuaweiIDButtonParams\u4e2d\u4f20\u5165riskLevel\u5b57\u6bb5&#xff0c;\u901a\u8fc7\u4e00\u952e\u767b\u5f55\u8fd4\u56deAuthorization Code\u67e5\u8be2\u7528\u6237\u7684\u98ce\u9669\u7b49\u7ea7\u3002<\/p>\n<table>\n<tr>\u63a5\u53e3\u540d\u63cf\u8ff0<\/tr>\n<tbody>\n<tr>\n<td>LoginWithHuaweiIDButtonParams<\/td>\n<td>LoginWithHuaweiIDButton\u7ec4\u4ef6\u53c2\u6570&#xff0c;\u652f\u6301\u4f20\u5165riskLevel\u5b57\u6bb5&#xff08;\u53ef\u9009&#xff09;&#xff0c;\u6807\u8bc6\u4e00\u952e\u767b\u5f55\u540e\u53ef\u67e5\u8be2\u7528\u6237\u98ce\u9669\u7b49\u7ea7\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h6>\u5f00\u53d1\u524d\u63d0<\/h6>\n<p>\u5728\u8fdb\u884c\u4ee3\u7801\u5f00\u53d1\u524d&#xff0c;\u8bf7\u786e\u8ba4\u5df2\u5b8c\u6210\u4e00\u952e\u767b\u5f55\u5f00\u53d1\u524d\u63d0\u5de5\u4f5c\u3002<\/p>\n<p>\u5e94\u7528\u5728\u4f7f\u7528\u83b7\u53d6\u98ce\u9669\u7b49\u7ea7\u80fd\u529b\u4e4b\u524d&#xff0c;\u9700\u8981\u5b8c\u6210\u5bf9\u5e94\u7684scope\u6743\u9650\u7533\u8bf7\u3002<\/p>\n<p>scope\u6743\u9650\u7533\u8bf7\u5ba1\u6279\u672a\u5b8c\u6210\u6216\u672a\u901a\u8fc7&#xff0c;\u5c06\u62a5\u95191001502014 \u5e94\u7528\u672a\u7533\u8bf7scopes\u6216permissions\u6743\u9650\u3002\u5f53\u524d\u53ef\u901a\u8fc7\u53d1\u9001\u90ae\u4ef6\u81f3accountkit&#064;huawei.com\u8fdb\u884c\u7533\u8bf7\u3002<\/p>\n<p>\u8bf7\u63d0\u4f9b\u5982\u4e0b\u4fe1\u606f\u8fdb\u884c\u7533\u8bf7&#xff0c;\u6211\u4eec\u4f1a\u57281-2\u4e2a\u5de5\u4f5c\u65e5\u5185\u56de\u590d\u7533\u8bf7\u7ed3\u679c&#xff0c;\u8bf7\u60a8\u7559\u610f\u90ae\u7bb1\u6d88\u606f\u3002<\/p>\n<p>\u90ae\u4ef6\u4e3b\u9898&#xff1a;\u3010\u83b7\u53d6\u98ce\u9669\u7b49\u7ea7\u3011\u6743\u9650\u7533\u8bf7<\/p>\n<p>\u90ae\u4ef6\u6b63\u6587&#xff1a;&#xff08;\u8bf7\u5728\u6b63\u6587\u4e2d\u63cf\u8ff0\u4e0b\u5177\u4f53\u5e0c\u671b\u7533\u8bf7\u7684\u6743\u9650&#xff09;<\/p>\n<p>\u4f01\u4e1a\u540d\u79f0&#xff1a;***<\/p>\n<p>\u5e94\u7528\u540d\u79f0&#xff1a;***<\/p>\n<p>\u5e94\u7528\u5305\u540d&#xff1a;com..<\/p>\n<p>APP ID&#xff1a;1****12<\/p>\n<p>Client ID&#xff1a;1****14<\/p>\n<p>\u80cc\u666f\u4ecb\u7ecd&#xff1a;&#xff08;\u8bf7\u63d0\u4f9b\u5e94\u7528\u7b80\u5355\u4ecb\u7ecd&#xff0c;\u4fbf\u4e8e\u5feb\u901f\u4e86\u89e3&#xff09;<\/p>\n<p>\u4f7f\u7528\u573a\u666f&#xff1a;&#xff08;\u8bf7\u63d0\u4f9b\u76f8\u5173\u4f7f\u7528\u573a\u666f\u7684\u6587\u5b57\u63cf\u8ff0\u3001\u4ea4\u4e92\u6d41\u7a0b\u56fe\u6216\u53c2\u8003\u4ea4\u4e92\u89c6\u9891\u7b49&#xff0c;\u53ef\u63d0\u4f9b\u7c7b\u4f3c\u5e94\u7528\u7684\u4f7f\u7528\u573a\u666f\u8fdb\u884c\u8bf4\u660e&#xff09;<\/p>\n<p>\u4f7f\u7528\u8be5\u6743\u9650\u7684\u5fc5\u8981\u6027&#xff1a;&#xff08;\u8bf7\u63d0\u4f9b\u5e94\u7528\u9700\u8981\u8be5\u6743\u9650\u548c\u4fe1\u606f\u7684\u5fc5\u8981\u6027&#xff09;<\/p>\n<h6>\u5ba2\u6237\u7aef\u5f00\u53d1<\/h6>\n<p>\u4e00\u952e\u767b\u5f55\u524d\u7f6e\u6d41\u7a0b&#xff08;\u83b7\u53d6\u7cfb\u7edf\u8d26\u53f7\u767b\u5f55\u72b6\u6001&#xff0c;\u83b7\u53d6\u7cfb\u7edf\u8d26\u53f7\u533f\u540d\u624b\u673a\u53f7&#xff09;\u8bf7\u53c2\u8003\u4e00\u952e\u767b\u5f55\u5f00\u53d1\u6d41\u7a0b\u4e2d\u7684\u5bfc\u5165\u6a21\u5757\u53ca\u83b7\u53d6\u533f\u540d\u624b\u673a\u53f7&#xff0c;\u786e\u4fdd\u7cfb\u7edf\u8d26\u53f7\u5df2\u767b\u5f55&#xff0c;\u533f\u540d\u624b\u673a\u53f7\u83b7\u53d6\u6210\u529f&#xff0c;\u4e14\u7528\u6237\u9996\u6b21\u901a\u8fc7\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u8be5\u5e94\u7528\u3002<\/p>\n<p>\u53c2\u8003\u4e00\u952e\u767b\u5f55\u5f00\u53d1\u6d41\u7a0b\u4e2d\u5c55\u793a\u4e00\u952e\u767b\u5f55\u9875\u9762\u5e76\u83b7\u53d6Authorization Code\u7684\u793a\u4f8b\u4ee3\u7801&#xff0c;\u5728LoginWithHuaweiIDButton\u7ec4\u4ef6\u53c2\u6570params\u4e2d\u8bbe\u7f6eriskLevel\u6807\u8bc6\u4e3atrue&#xff0c;\u5176\u4f59\u793a\u4f8b\u4ee3\u7801\u4fdd\u6301\u4e0d\u53d8&#xff0c;\u62c9\u8d77\u5e94\u7528\u767b\u5f55\u9875\u3002<\/p>\n<p><span class=\"token function\">LoginWithHuaweiIDButton<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n  params<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ LoginWithHuaweiIDButton\u652f\u6301\u7684\u6837\u5f0f<\/span><br \/>\n    style<span class=\"token operator\">:<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>Style<span class=\"token punctuation\">.<\/span><span class=\"token constant\">BUTTON_RED<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u8d26\u53f7\u767b\u5f55\u6309\u94ae\u5728\u767b\u5f55\u8fc7\u7a0b\u4e2d\u5c55\u793a\u52a0\u8f7d\u6001<\/span><br \/>\n    extraStyle<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      buttonStyle<span class=\"token operator\">:<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">loginComponentManager<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">ButtonStyle<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">loadingStyle<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n        show<span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token comment\">\/\/ LoginWithHuaweiIDButton\u7684\u8fb9\u6846\u5706\u89d2\u534a\u5f84<\/span><br \/>\n    borderRadius<span class=\"token operator\">:<\/span> <span class=\"token number\">24<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token comment\">\/\/ LoginWithHuaweiIDButton\u652f\u6301\u7684\u767b\u5f55\u7c7b\u578b<\/span><br \/>\n    loginType<span class=\"token operator\">:<\/span> loginComponentManager<span class=\"token punctuation\">.<\/span>LoginType<span class=\"token punctuation\">.<\/span><span class=\"token constant\">QUICK_LOGIN<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token comment\">\/\/ LoginWithHuaweiIDButton\u652f\u6301\u6309\u94ae\u7684\u6837\u5f0f\u8ddf\u968f\u7cfb\u7edf\u6df1\u6d45\u8272\u6a21\u5f0f\u5207\u6362<\/span><br \/>\n    supportDarkMode<span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token comment\">\/\/ verifyPhoneNumber&#xff1a;\u5982\u679c\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u5728\u8fc7\u53bb90\u5929\u5185\u672a\u8fdb\u884c\u77ed\u4fe1\u9a8c\u8bc1&#xff0c;\u662f\u5426\u62c9\u8d77Account Kit\u63d0\u4f9b\u7684\u77ed\u4fe1\u9a8c\u8bc1\u7801\u9875\u9762<\/span><br \/>\n    verifyPhoneNumber<span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token comment\">\/\/ riskLevel&#xff1a;\u6807\u8bc6\u5e94\u7528\u671f\u671b\u5728\u767b\u5f55\u540e\u83b7\u53d6\u534e\u4e3a\u8d26\u53f7\u7684\u98ce\u9669\u7b49\u7ea7<\/span><br \/>\n    riskLevel<span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  controller<span class=\"token operator\">:<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>controller<br \/>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>\u7528\u6237\u540c\u610f\u534f\u8bae\u5e76\u70b9\u51fb\u4e00\u952e\u767b\u5f55\u6309\u94ae\u540e&#xff0c;\u53ef\u83b7\u53d6\u5230Authorization Code&#xff0c;\u5c06\u8be5\u503c\u4f20\u7ed9\u5e94\u7528\u670d\u52a1\u7aef\u7528\u4e8e\u83b7\u53d6\u7528\u6237\u98ce\u9669\u7b49\u7ea7\u3002<\/p>\n<h6>\u670d\u52a1\u7aef\u5f00\u53d1<\/h6>\n<p>\u5e94\u7528\u670d\u52a1\u7aef\u4f7f\u7528Client ID\u3001Client Secret\u3001Authorization Code\u8c03\u7528\u83b7\u53d6\u7528\u6237\u7ea7\u51ed\u8bc1\u63a5\u53e3\u5411\u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u5668\u8bf7\u6c42\u83b7\u53d6Access Token\u3001Refresh Token\u3002<\/p>\n<p>\u4f7f\u7528Access Token\u8c03\u7528\u83b7\u53d6\u7528\u6237\u98ce\u9669\u7b49\u7ea7\u63a5\u53e3\u83b7\u53d6\u7528\u6237\u7684\u98ce\u9669\u7b49\u7ea7\u3002<\/p>\n<p>Access Token\u8fc7\u671f\u5904\u7406<\/p>\n<p>\u7531\u4e8eAccess Token\u7684\u6709\u6548\u671f\u4ec5\u4e3a60\u5206\u949f&#xff0c;\u5f53Access Token\u5931\u6548\u6216\u8005\u5373\u5c06\u5931\u6548\u65f6&#xff08;\u53ef\u901a\u8fc7REST API\u9519\u8bef\u7801\u5224\u65ad&#xff09;&#xff0c;\u53ef\u4ee5\u4f7f\u7528Refresh Token&#xff08;\u6709\u6548\u671f180\u5929&#xff09;\u901a\u8fc7\u5237\u65b0\u7528\u6237\u7ea7\u51ed\u8bc1\u63a5\u53e3\u5411\u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u5668\u8bf7\u6c42\u83b7\u53d6\u65b0\u7684Access Token\u3002<\/p>\n<p>\u8bf4\u660e<\/p>\n<p>\u5f53Access Token\u5931\u6548\u65f6&#xff0c;\u82e5\u5e94\u7528\u4e0d\u4f7f\u7528Refresh Token\u5411\u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u5668\u8bf7\u6c42\u83b7\u53d6\u65b0\u7684Access Token&#xff0c;\u8d26\u53f7\u7684\u6388\u6743\u4fe1\u606f\u5c06\u4f1a\u5931\u6548&#xff0c;\u5bfc\u81f4\u4f7f\u7528Access Token\u7684\u529f\u80fd\u90fd\u4f1a\u5931\u8d25\u3002<\/p>\n<p>\u5f53Access Token\u975e\u6b63\u5e38\u5931\u6548&#xff08;\u5982\u4fee\u6539\u5bc6\u7801\u3001\u9000\u51fa\u8d26\u53f7\u3001\u5220\u9664\u8bbe\u5907&#xff09;\u65f6&#xff0c;\u5e94\u7528\u53ef\u91cd\u65b0\u767b\u5f55\u6388\u6743\u83b7\u53d6Authorization Code&#xff0c;\u5411\u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u5668\u8bf7\u6c42\u83b7\u53d6\u65b0\u7684Access Token\u3002<\/p>\n<p>Refresh Token\u8fc7\u671f\u5904\u7406<\/p>\n<p>\u7531\u4e8eRefresh Token\u7684\u6709\u6548\u671f\u4e3a180\u5929&#xff0c;\u5f53Refresh Token\u5931\u6548\u540e&#xff08;\u53ef\u901a\u8fc7REST API\u9519\u8bef\u7801\u5224\u65ad&#xff09;&#xff0c;\u5e94\u7528\u670d\u52a1\u7aef\u9700\u8981\u901a\u77e5\u5ba2\u6237\u7aef&#xff0c;\u91cd\u65b0\u8c03\u7528\u6388\u6743\u63a5\u53e3&#xff0c;\u8bf7\u6c42\u7528\u6237\u91cd\u65b0\u6388\u6743\u3002<\/p>\n<p>\u5e94\u7528\u57fa\u4e8e\u98ce\u9669\u7b49\u7ea7\u5224\u522b\u7528\u6237\u98ce\u9669\u7a0b\u5ea6&#xff0c;\u51b3\u5b9a\u662f\u5426\u9700\u8981\u5bf9\u7528\u6237\u8fdb\u884c\u989d\u5916\u9a8c\u8bc1\u6216\u62e6\u622a\u7528\u6237\u884c\u4e3a\u3002<\/p>\n<h5>\u534e\u4e3a\u8d26\u53f7\u5176\u4ed6\u65b9\u5f0f\u767b\u5f55\u83b7\u53d6\u7528\u6237\u98ce\u9669\u7b49\u7ea7<\/h5>\n<h6>\u573a\u666f\u4ecb\u7ecd<\/h6>\n<p>\u5e94\u7528\u5df2\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u5173\u8054\u767b\u5f55\u573a\u666f\u4e0b&#xff0c;\u5f00\u5c55\u5546\u6237\u8865\u8d34\u3001\u4f18\u60e0\u5238\u53d1\u653e\u7b49\u5546\u4e1a\u8425\u9500\u6d3b\u52a8\u65f6\u83b7\u53d6\u534e\u4e3a\u8d26\u53f7\u98ce\u9669\u7b49\u7ea7&#xff0c;\u6709\u6548\u8bc6\u522b\u201c\u8585\u7f8a\u6bdb\u201d\u98ce\u9669&#xff0c;\u4fdd\u62a4\u8425\u9500\u8d44\u6e90\u5408\u7406\u4f7f\u7528&#xff0c;\u964d\u4f4e\u4e1a\u52a1\u5b89\u5168\u95ee\u9898\u7ed9\u8425\u9500\u65b9\u5e26\u6765\u7684\u635f\u5931&#xff0c;\u4e3a\u76f8\u5173\u6d3b\u52a8\u4fdd\u9a7e\u62a4\u822a\u3002\u4ee5\u4e0b\u5bf9Account Kit\u63d0\u4f9b\u7684\u83b7\u53d6\u7528\u6237\u98ce\u9669\u7b49\u7ea7\u80fd\u529b\u8fdb\u884c\u4ecb\u7ecd&#xff0c;\u5982\u679c\u9700\u8981\u540c\u65f6\u83b7\u53d6\u98ce\u9669\u7b49\u7ea7\u548c\u624b\u673a\u53f7\u8fd8\u53ef\u53c2\u8003\u573a\u666f\u5316\u63a7\u4ef6\u83b7\u53d6\u624b\u673a\u53f7\u548c\u98ce\u9669\u7b49\u7ea7Button\u8fdb\u884c\u5b9e\u73b0\u3002<\/p>\n<h6>\u7ea6\u675f\u4e0e\u9650\u5236<\/h6>\n<p>\u83b7\u53d6\u7528\u6237\u98ce\u9669\u7b49\u7ea7scope\u4ec5\u652f\u6301\u4e0eopenid\u3001phone\u3001profile\u7ec4\u5408\u4f7f\u7528&#xff0c;\u63a5\u53e3\u652f\u6301\u7684\u5168\u91cfscopes\u89c1scope\u5217\u8868\u3002<\/p>\n<p>\u83b7\u53d6\u98ce\u9669\u7b49\u7ea7\u80fd\u529b\u652f\u6301Phone\u3001Tablet\u3001PC\/2in1\u8bbe\u5907\u3002\u5e76\u4e14\u4ece5.1.0(18)\u7248\u672c\u5f00\u59cb&#xff0c;\u65b0\u589e\u652f\u6301Wearable\u8bbe\u5907&#xff1b;\u4ece5.1.1(19)\u7248\u672c\u5f00\u59cb&#xff0c;\u65b0\u589e\u652f\u6301TV\u8bbe\u5907\u3002<\/p>\n<h6>\u4e1a\u52a1\u6d41\u7a0b<\/h6>\n<p>\u6d41\u7a0b\u8bf4\u660e&#xff1a;<\/p>\n<p>\u5e94\u7528\u901a\u8fc7\u4f20\u5bf9\u5e94scope\u548cpermission\u8c03\u7528\u6388\u6743API&#xff0c;\u5982\u679c\u5df2\u6388\u6743\u5219\u76f4\u63a5\u8fd4\u56de\u4e34\u65f6\u767b\u5f55\u51ed\u8bc1Authorization Code&#xff0c;\u5982\u679c\u672a\u6388\u6743&#xff1a;<\/p>\n<p>scopes\u4f20\u5165riskLevel&#xff0c;\u5219\u6388\u6743API\u76f4\u63a5\u8fd4\u56deAuthorization Code\u3002<\/p>\n<p>scopes\u4f20\u5165riskLevel\u3001profile\/phone&#xff0c;\u5219\u62c9\u8d77\u6388\u6743\u9875&#xff0c;\u7528\u6237\u70b9\u51fb\u5141\u8bb8\u540e\u6388\u6743API\u8fd4\u56deAuthorization Code\u3002<\/p>\n<p>\u5c06Authorization Code\u4f20\u7ed9\u5e94\u7528\u670d\u52a1\u7aef&#xff0c;\u4f7f\u7528Client ID\u3001Client Secret\u3001Authorization Code\u4ece\u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u5668\u4e2d\u83b7\u53d6Access Token&#xff0c;\u518d\u4f7f\u7528Access Token\u8bf7\u6c42\u83b7\u53d6\u7528\u6237\u7684\u98ce\u9669\u7b49\u7ea7\u3002<\/p>\n<h6>\u63a5\u53e3\u8bf4\u660e<\/h6>\n<table>\n<tr>\u63a5\u53e3\u540d\u63cf\u8ff0<\/tr>\n<tbody>\n<tr>\n<td>createAuthorizationWithHuaweiIDRequest(): AuthorizationWithHuaweiIDRequest<\/td>\n<td>\u83b7\u53d6\u6388\u6743\u63a5\u53e3&#xff0c;\u901a\u8fc7AuthorizationWithHuaweiIDRequest\u4f20\u5165\u98ce\u9669\u7b49\u7ea7\u7684scope&#xff1a;riskLevel\u53caAuthorization Code\u7684permission&#xff1a;serviceauthcode&#xff0c;\u5373\u53ef\u5728\u6388\u6743\u7ed3\u679c\u4e2d\u83b7\u53d6\u5230Authorization Code\u3002<\/td>\n<\/tr>\n<tr>\n<td>constructor(context?: common.Context)<\/td>\n<td>\u521b\u5efa\u6388\u6743\u8bf7\u6c42Controller\u3002<\/td>\n<\/tr>\n<tr>\n<td>executeRequest(request: AuthenticationRequest): Promise<\/td>\n<td>\u901a\u8fc7Promise\u65b9\u5f0f\u6267\u884c\u6388\u6743\u64cd\u4f5c\u3002\u53ef\u4eceAuthenticationResponse\u7684\u5b50\u7c7bAuthorizationWithHuaweiIDResponse\u4e2d\u89e3\u6790AuthorizationWithHuaweiIDCredential&#xff0c;\u5176\u4e2d\u5305\u542bauthorizedScopes&#xff0c;\u53ef\u786e\u8ba4\u98ce\u9669\u7b49\u7ea7\u662f\u5426\u6388\u6743\u6210\u529f\u3002\u5177\u4f53\u89e3\u6790\u65b9\u6cd5\u8bf7\u53c2\u8003\u5ba2\u6237\u7aef\u5f00\u53d1\u7684\u793a\u4f8b\u4ee3\u7801\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h6>\u5f00\u53d1\u524d\u63d0<\/h6>\n<p>\u5728\u8fdb\u884c\u4ee3\u7801\u5f00\u53d1\u524d&#xff0c;\u8bf7\u786e\u4fdd\u5df2\u6309\u7167\u201c\u5f00\u53d1\u51c6\u5907\u201d\u7ae0\u8282\u4e2d\u7684\u6307\u5bfc\u5b8c\u6210\u914d\u7f6e\u7b7e\u540d\u548c\u6307\u7eb9\u3001\u914d\u7f6eClient ID\u3002<\/p>\n<p>\u5e94\u7528\u5728\u4f7f\u7528\u83b7\u53d6\u98ce\u9669\u7b49\u7ea7\u80fd\u529b\u4e4b\u524d&#xff0c;\u9700\u8981\u5b8c\u6210\u5bf9\u5e94\u7684scope\u6743\u9650\u7533\u8bf7\u3002<\/p>\n<p>scope\u6743\u9650\u7533\u8bf7\u5ba1\u6279\u672a\u5b8c\u6210\u6216\u672a\u901a\u8fc7&#xff0c;\u5c06\u62a5\u95191001502014 \u5e94\u7528\u672a\u7533\u8bf7scopes\u6216permissions\u6743\u9650\u3002\u5f53\u524d\u53ef\u901a\u8fc7\u53d1\u9001\u90ae\u4ef6\u81f3accountkit&#064;huawei.com\u8fdb\u884c\u7533\u8bf7\u3002<\/p>\n<p>\u8bf7\u63d0\u4f9b\u5982\u4e0b\u4fe1\u606f\u8fdb\u884c\u7533\u8bf7&#xff0c;\u6211\u4eec\u4f1a\u57281-2\u4e2a\u5de5\u4f5c\u65e5\u5185\u56de\u590d\u7533\u8bf7\u7ed3\u679c&#xff0c;\u8bf7\u60a8\u7559\u610f\u90ae\u7bb1\u6d88\u606f\u3002<\/p>\n<p>\u90ae\u4ef6\u4e3b\u9898&#xff1a;\u3010\u83b7\u53d6\u98ce\u9669\u7b49\u7ea7\u3011\u6743\u9650\u7533\u8bf7<\/p>\n<p>\u90ae\u4ef6\u6b63\u6587&#xff1a;&#xff08;\u8bf7\u5728\u6b63\u6587\u4e2d\u63cf\u8ff0\u4e0b\u5177\u4f53\u5e0c\u671b\u7533\u8bf7\u7684\u6743\u9650&#xff09;<\/p>\n<p>\u4f01\u4e1a\u540d\u79f0&#xff1a;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Account Kit&#xff08;\u534e\u4e3a\u8d26\u53f7\u670d\u52a1&#xff09;\u7b80\u4ecb<br \/>\n\u573a\u666f\u4ecb\u7ecd<br \/>\nAccount Kit&#xff08;\u534e\u4e3a\u8d26\u53f7\u670d\u52a1&#xff09;\u63d0\u4f9b\u7b80\u5355\u3001\u5feb\u901f\u3001\u5b89\u5168\u7684\u767b\u5f55\u529f\u80fd&#xff0c;\u8ba9\u7528\u6237\u5feb\u6377\u5730\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u5e94\u7528\u3002\u7528\u6237\u6388\u6743\u540e&#xff0c;Account Kit\u53ef\u63d0\u4f9b\u5934\u50cf\u3001\u6635\u79f0\u3001\u624b\u673a\u53f7\u7801\u7b49\u4fe1\u606f&#xff0c;\u5e2e\u52a9\u5e94\u7528\u66f4\u4e86\u89e3\u7528\u6237\u3002<br \/>\n\u80fd\u529b\u8303\u56f4<br \/>\n\u767b\u5f55&#xff1a;\u63d0\u4f9b\u767b\u5f55\u670d\u52a1&#xff0c;\u8ba9\u7528\u6237\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u5feb\u901f\u767b\u5f55\u5e94\u7528\u3002\u83b7\u53d6\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u4fe1\u606f&#xff1a;\u83b7\u53d6\u7528\u6237<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[280,67],"topic":[],"class_list":["post-113997","post","type-post","status-publish","format-standard","hentry","category-server","tag-harmonyos","tag-67"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Account Kit \u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u4ecb\u7ecd - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wsisp.com\/helps\/113997.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Account Kit \u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u4ecb\u7ecd - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"Account Kit&#xff08;\u534e\u4e3a\u8d26\u53f7\u670d\u52a1&#xff09;\u7b80\u4ecb \u573a\u666f\u4ecb\u7ecd Account Kit&#xff08;\u534e\u4e3a\u8d26\u53f7\u670d\u52a1&#xff09;\u63d0\u4f9b\u7b80\u5355\u3001\u5feb\u901f\u3001\u5b89\u5168\u7684\u767b\u5f55\u529f\u80fd&#xff0c;\u8ba9\u7528\u6237\u5feb\u6377\u5730\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u5e94\u7528\u3002\u7528\u6237\u6388\u6743\u540e&#xff0c;Account Kit\u53ef\u63d0\u4f9b\u5934\u50cf\u3001\u6635\u79f0\u3001\u624b\u673a\u53f7\u7801\u7b49\u4fe1\u606f&#xff0c;\u5e2e\u52a9\u5e94\u7528\u66f4\u4e86\u89e3\u7528\u6237\u3002 \u80fd\u529b\u8303\u56f4 \u767b\u5f55&#xff1a;\u63d0\u4f9b\u767b\u5f55\u670d\u52a1&#xff0c;\u8ba9\u7528\u6237\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u5feb\u901f\u767b\u5f55\u5e94\u7528\u3002\u83b7\u53d6\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u4fe1\u606f&#xff1a;\u83b7\u53d6\u7528\u6237\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/113997.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-07T23:49:59+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"36 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/113997.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/113997.html\",\"name\":\"Account Kit \u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u4ecb\u7ecd - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2026-10-07T23:49:59+00:00\",\"dateModified\":\"2026-10-07T23:49:59+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/113997.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/113997.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/113997.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Account Kit \u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u4ecb\u7ecd\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Account Kit \u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u4ecb\u7ecd - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wsisp.com\/helps\/113997.html","og_locale":"zh_CN","og_type":"article","og_title":"Account Kit \u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u4ecb\u7ecd - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"Account Kit&#xff08;\u534e\u4e3a\u8d26\u53f7\u670d\u52a1&#xff09;\u7b80\u4ecb \u573a\u666f\u4ecb\u7ecd Account Kit&#xff08;\u534e\u4e3a\u8d26\u53f7\u670d\u52a1&#xff09;\u63d0\u4f9b\u7b80\u5355\u3001\u5feb\u901f\u3001\u5b89\u5168\u7684\u767b\u5f55\u529f\u80fd&#xff0c;\u8ba9\u7528\u6237\u5feb\u6377\u5730\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u767b\u5f55\u5e94\u7528\u3002\u7528\u6237\u6388\u6743\u540e&#xff0c;Account Kit\u53ef\u63d0\u4f9b\u5934\u50cf\u3001\u6635\u79f0\u3001\u624b\u673a\u53f7\u7801\u7b49\u4fe1\u606f&#xff0c;\u5e2e\u52a9\u5e94\u7528\u66f4\u4e86\u89e3\u7528\u6237\u3002 \u80fd\u529b\u8303\u56f4 \u767b\u5f55&#xff1a;\u63d0\u4f9b\u767b\u5f55\u670d\u52a1&#xff0c;\u8ba9\u7528\u6237\u4f7f\u7528\u534e\u4e3a\u8d26\u53f7\u5feb\u901f\u767b\u5f55\u5e94\u7528\u3002\u83b7\u53d6\u534e\u4e3a\u8d26\u53f7\u7528\u6237\u4fe1\u606f&#xff1a;\u83b7\u53d6\u7528\u6237","og_url":"https:\/\/www.wsisp.com\/helps\/113997.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2026-10-07T23:49:59+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"36 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/113997.html","url":"https:\/\/www.wsisp.com\/helps\/113997.html","name":"Account Kit \u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u4ecb\u7ecd - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2026-10-07T23:49:59+00:00","dateModified":"2026-10-07T23:49:59+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/113997.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/113997.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/113997.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"Account Kit \u534e\u4e3a\u8d26\u53f7\u670d\u52a1\u4ecb\u7ecd"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/113997","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=113997"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/113997\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=113997"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=113997"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=113997"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=113997"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}