{"id":19273055,"url":"https://github.com/fluttercandies/flutter_ali_auth","last_synced_at":"2025-04-23T21:26:17.604Z","repository":{"id":61975968,"uuid":"550113958","full_name":"fluttercandies/flutter_ali_auth","owner":"fluttercandies","description":"Flutter Ali Auth Plugin 阿里云一键登录Flutter插件","archived":false,"fork":false,"pushed_at":"2024-06-24T09:36:24.000Z","size":29716,"stargazers_count":52,"open_issues_count":14,"forks_count":17,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-30T03:41:19.567Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://pub.flutter-io.cn/packages/flutter_ali_auth","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fluttercandies.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-12T08:20:13.000Z","updated_at":"2025-03-27T14:56:40.000Z","dependencies_parsed_at":"2024-06-24T11:11:04.215Z","dependency_job_id":null,"html_url":"https://github.com/fluttercandies/flutter_ali_auth","commit_stats":{"total_commits":64,"total_committers":3,"mean_commits":"21.333333333333332","dds":0.09375,"last_synced_commit":"eb8130306af3dcc8425be647f5489cfdf7e2e42e"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluttercandies%2Fflutter_ali_auth","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluttercandies%2Fflutter_ali_auth/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluttercandies%2Fflutter_ali_auth/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluttercandies%2Fflutter_ali_auth/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fluttercandies","download_url":"https://codeload.github.com/fluttercandies/flutter_ali_auth/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250516322,"owners_count":21443601,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T20:40:38.350Z","updated_at":"2025-04-23T21:26:17.573Z","avatar_url":"https://github.com/fluttercandies.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# flutter_ali_auth\n\nLanguage: 中文\n\n基于阿里云一键登录的 **Flutter集成的SDK插件**\n\n阿里云一键登录安卓接入文档: [Android_v2.12-1.15](https://help.aliyun.com/document_detail/144231.html)\n\n阿里云一键登录IOS接入文档: [iOS_v2.12-1.15](https://help.aliyun.com/document_detail/144186.html)\n\n## 更新历史 🌄\n\n- 现已更新到与官方同步的SDK [v2.12-1.15](https://help.aliyun.com/document_detail/121113.html) 版本;\n- 授权页适配夜间/暗色模式(仅全屏，弹窗模式需自定以);\n\n## 目录\n* [效果图](#效果图-)\n    * [IOS](#IOS)\n    * [Android](#Android)\n* [准备工作](#准备工作-)\n* [原生SDK代码调用顺序](##先了解原生sdk代码调用顺序-)\n* [插件使用](#插件使用-%EF%B8%8F)\n    * [添加监听](#1-添加监听)\n    * [初始化SDK配置密钥与UI](#2初始化sdk-initsdk)\n    * [检查环境](#3一键登录获取token-login)\n    * [预取号](#4检查认证环境-checkverifyenable)\n    * [调起授权页面，获取Token](#5一键登录预取号-accelerateloginpage)\n* [注意事项](#注意事项-%EF%B8%8F)\n\n\n\n\n\n## 效果图 📷\n\n### IOS\n\n| 全屏 | 底部弹窗 | 中间弹窗 |\n| --- | --- | --- |\n| ![](https://github.com/ManInTheWind/assets_repository/blob/main/images/project/full_screen_with_custom_view_ios.PNG \"full_screen_image_ios\") | ![](https://github.com/ManInTheWind/assets_repository/blob/main/images/project/bottomsheet_ios.PNG) | ![](https://github.com/ManInTheWind/assets_repository/blob/main/images/project/alert_ios.PNG) |\n\n### Android\n\n| 全屏 | 底部弹窗 | 中间弹窗 |\n| --- | --- | --- |\n| ![](https://github.com/ManInTheWind/assets_repository/blob/main/images/project/full_screen_with_custom_view_android.jpg \"full_screen_image_android\") | ![](https://github.com/ManInTheWind/assets_repository/blob/main/images/project/bottomsheet_android.jpg) | ![](https://github.com/ManInTheWind/assets_repository/blob/main/images/project/alert_android.jpg) |\n\n## 插件须知 ⚠️\n### 关于权限\n1. 安卓权限，本插件已经添加必要的权限支持：\n```xml\n\u003cuses-permission android:name=\"android.permission.INTERNET\" /\u003e \u003c!-- 网络访问 --\u003e\n\u003cuses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\" /\u003e \u003c!-- 检查wifi网络状态 --\u003e\n\u003cuses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" /\u003e \u003c!-- 检查网络状态 --\u003e\n\u003cuses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\" /\u003e \u003c!-- 切换网络通道 --\u003e\n\u003cuses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/\u003e \u003c!-- 本地信息缓存 --\u003e\n\u003cuses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\" /\u003e \u003c!-- 开关Wi-Fi状态，解决中国内地机型移动网络权限问题需要 --\u003e\n```\n需要加上自行根据实际情况，设置HTTP白名单\n```xml\n \u003cnetwork-security-config\u003e\n  \u003cdomain-config cleartextTrafficPermitted=\"true\" \u003e\n    \u003cdomain includeSubdomains=\"true\"\u003eenrichgw.10010.com\u003c/domain\u003e \u003c!-- 联通内部5G请求域名，开发者需要添加 --\u003e\n    \u003cdomain includeSubdomains=\"true\"\u003eonekey.cmpassport.com\u003c/domain\u003e  \u003c!-- 移动内部请求域名，开发者需要添加 --\u003e\n  \u003c/domain-config\u003e\n\u003c/network-security-config\u003e\n```\n\u003e目前中国移动提供的个别接口为HTTP请求，对于全局禁用HTTP的项目，需要设置HTTP白名单。以下为运营商HTTP接口域名：onekey.cmpassport.com，enrichgw.10010.com，\n详情可参见[官方文档](https://help.aliyun.com/document_detail/144231.html#section-no4-043-b31)\n\n2.苹果开发\n\n- 插件已经集成主库`ATAuthSDK.framework`，不需要添加`-ObjC`。\n\n- 开发工具建议使用Xcode 11及以上。\n\n- 支持iOS 10及以上系统。\n\n- 如果集成本插件之后遇到`File not found: /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneos.a` 的问题，问题可能是 本插件依赖MBProgressHUD，而MBProgressHUD的deployment target过低，你只需要将其改到12以上即可。\n\n## 最后，有用请🌟~\n\n## 准备工作 🔧\n\n请登录阿里云控制台[号码认证服务](https://dypns.console.aliyun.com/?spm=5176.13329450.favorite.ddypns.2fdd4df5w4jELK#/overview)\n分别添IOS和Android的认证方案，从而获取到SDK的秘钥。\n注意：Ios只需要输入绑定`Bundle name`即可，Android则需要包名和和签名。[如何获取App的签名](https://help.aliyun.com/document_detail/87870.html)\n\n## 先了解原生SDK代码调用顺序 🔗\n```java\n/*\n* 1.初始化获取Token实例\n*/\nTokenResultListener mTokenListener = new TokenResultListener();\n\n/*\n* 2.初始化SDK实例\n*/\nmAlicomAuthHelper = PhoneNumberAuthHelper.getInstance(context, mTokenListener);\n\n/*\n* 3.设置SDK密钥\n*/\nmAlicomAuthHelper.setAuthSDKInfo();\n\n/*\n* 4.检测终端⽹络环境是否⽀持⼀键登录或者号码认证，根据回调结果确定是否可以使⽤⼀键登录功能\n*/\nmAlicomAuthHelper.checkEnvAvailable(PhoneNumberAuthHelper#SERVICE_TYPE_LOGIN);\n\n/*\n* 5.若步骤4返回true，则根据业务情况，调⽤预取号或者⼀键登录接⼝\n*   详⻅Demo接⼊⼯程\n*/\nmAlicomAuthHelper.getLoginToken(context, 5000);\n```\n\n## 插件使用 ☄️\n\n\n### 1. 添加监听\n```dart\n/// 传入回调函数 onEvent\nAliAuthClient.handleEvent(onEvent: _onEvent);\n/// 移除回调事件\nAliAuthClient.removeHandler();\n```\n在`onEvent`中监听回调并且自行进行判断\n```dart\nvoid _onEvent(AuthResponseModel event) async {\n  //print(event);\n}\n\n``` \n回调实例`AuthResponseModel`\n在原生中已经对事件响应码进行了包装，消息成员如下\n\n| 参数名 | 类型 | 描述 |\n| --- | --- | --- |\n| resultCode | String | SDK返回码，600000表示操作成功（初始化/检查环境/预取号/登录成功）,详情参考官网的[SDK返回码](https://help.aliyun.com/document_detail/144186.html#section-24w-vwk-205) |\n| requestId | String | SDK请求ID，如出现无法解决问题时候可以根据Id创建工单咨询|\n| msg | String | SDK返回码描述，详情参考官网的[SDK返回码](https://help.aliyun.com/document_detail/144186.html#section-24w-vwk-205) |\n| token | String | 在 **授权页面点击登录按钮成功** 认证后resultCode为60000时，会返回认证的Token,此时SDK提供的服务到此结束，可以拿Token到服务端进行自行判断登录认证|\n| innerCode | String | 如果初始化认证SDK出现问题，回调信息一般会携带运行商的错误代码和错误信息，详情参考[运营商SDK错误码](https://help.aliyun.com/document_detail/85351.htm?spm=a2c4g.11186623.0.0.ab636cf0vQSEZO#topic2087)|\n| innerMsg | String | 运行商认证时候出现的错误信息|\n\n\n### 2.初始化SDK **(initSdk)**\n\n```dart\n/// 初始化前需要须对插件进行监听\nawait AliAuthClient.initSdk(\nauthConfig: const AuthConfig(),\n);\n```\n需要通过 `AuthConfig` 来配置安卓和IOS端的秘钥，以及UI的配置 `AuthUIConfig`,成员如下\n\n| 参数名 | 类型           | 描述                                                                                                                                      |\n| --- |--------------|-----------------------------------------------------------------------------------------------------------------------------------------|\n| iosSdk | String       | IOS秘钥                                                                                                                                   |\n| androidSdk | String       | Android秘钥                                                                                                                               |\n| enableLog | bool         | 是否打印日志                                                                                                                                  |\n| authUIStyle | Enum         | fullScreen(全屏) bottomSheet(底部弹窗) alert(中间弹窗) 目前暂时配置了三种常用竖屏的形式,更多形式参考[官方文档](https://help.aliyun.com/document_detail/144232.html) 后续将陆续支持 |\n| authUIConfig | AuthUIConfig | UI配置类                                                                                                                                   |\n\n`AuthUIConfig`为UI的配置类型,分为全屏UI配置 `FullScreenUIConfig` 和弹窗UI配置 `AlertUIConfig`\n\n`FullScreenUIConfig` 成员如下\n\n| 参数名 | 类型 | 描述 |\n| --- | --- | --- |\n| navConfig | NavConfig | 导航栏UI配置 |\n| backgroundColor | String | 十六进制背景颜色,eg: \"#ffffff\" |\n| backgroundImage | String | 本地的背景图片,eg: \"/assets/image/background.png\" |\n| prefersStatusBarHidden | Boolean | 状态栏是否隐藏，默认显示 |\n| logoConfig | LogoConfig | LogoUI配置类 |\n| sloganConfig | SloganConfig | SloganConfig配置类 |\n| phoneNumberConfig | PhoneNumberConfig | PhoneNumberConfig配置类 |\n| loginButtonConfig | LoginButtonConfig | LoginButtonConfig配置类 |\n| changeButtonConfig | ChangeButtonConfig | ChangeButtonConfig配置类 |\n| checkBoxConfig | CheckBoxConfig | CheckBoxConfig配置类 |\n| privacyConfig | PrivacyConfig | PrivacyConfig配置，自定义协议（目前只支持三个） |\n\n`AlertUIConfig` 成员如下\n\n| 参数名 | 类型                  | 描述 |\n| --- |---------------------| --- |\n| alertTitleBarConfig | AlertTitleBarConfig | 弹窗ActionBar的UI配置 |\n| alertContentViewColor | String              | 十六进制背景颜色,eg: \"#ffffff\" |\n| alertBlurViewColor | String              | 弹窗蒙层的颜色 |\n| alertBlurViewAlpha | double              | 弹窗蒙层的透明度 |\n| alertBorderRadius | double              | 弹窗圆角 |\n| alertBorderWidth | double              | 边框宽度,仅Android生效 |\n| alertBorderColor | String              | 边框颜色,仅Android生效 |\n| alertWindowWidth | double              | 弹窗宽度 |\n| alertWindowHeight | double              | 弹窗高度 |\n| logoConfig | LogoConfig          | LogoUI配置类 |\n| sloganConfig | SloganConfig        | SloganConfig配置类 |\n| phoneNumberConfig | PhoneNumberConfig   | PhoneNumberConfig配置类 |\n| loginButtonConfig | LoginButtonConfig   | LoginButtonConfig配置类 |\n| changeButtonConfig | ChangeButtonConfig  | ChangeButtonConfig配置类 |\n| checkBoxConfig | CheckBoxConfig      | CheckBoxConfig配置类，弹窗默认隐藏checkbox |\n| privacyConfig | PrivacyConfig       | PrivacyConfig配置，自定义协议（目前只支持三个） |\n\n\n### 3.一键登录获取Token **(login)**\n\n调用该接口首先会弹起授权页，点击授权页的登录按钮获取Token,可选参数为Timeout,默认5s\n\n调用此接口后会通过之前注册的监听中回调信息\n```dart\n/// 一键登陆 需要用try-catch[PlatformException]捕获插件返回的异常\n/// 无返回内容,调用之后，会在[handleEvent]的[onEvent]返回回调\nawait AliAuthClient.login({double timeout = 5.0})\n```\n\n\n### 4.其他方法\n\n下面的方法与官网接入文档一致，可以根据个人开发情况进行使用\n\n```dart\n/// 关闭授权页loading\nawait AliAuthClient.hideLoginLoading();\n\n/// 退出授权认证页\nawait AliAuthClient.quitLoginPage();\n```\n\n### 5.如有帮助到你，请我喝咖啡\n\n我相信本项目的代码一定能在商业项目上帮助到您，如果您从本项目中获益，不妨请作者我喝杯咖啡,\n您的捐助使我更有动力创作～\n\n\n\n\n\n| 微信 | 支付宝 | \n| ---------------- | ------ | \n| ![wechat donate](https://github.com/ManInTheWind/assets_repository/blob/main/images/project/IMG_2046.JPG) | ![alipay donate](https://github.com/ManInTheWind/assets_repository/blob/main/images/project/IMG_2047.jpg) | \n\n\n\n\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffluttercandies%2Fflutter_ali_auth","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffluttercandies%2Fflutter_ali_auth","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffluttercandies%2Fflutter_ali_auth/lists"}