苹果签名插件
用 Apple 登录的非官方 Capacitor 插件 。 [^1]
特征
Capacitor Apple Sign-In插件是Capacitor App最完整的苹果认证解决方案之一. 以下是一些关键特征:
- 🖥️ 跨平台:支持Android,iOS,和Web.
- 🍎 原生标志 - 单位:在iOS上使用本土认证服务.
- 🌐 网络视频 OAuth:在Android上执行Apple OAuth流而无需外部依赖.
- 📧 范围支助:在所有平台上请求电子邮件和全名.
- 🔐 状态( S):支持非ce用于回放保护并状态用于CSRF保护.
- 🪶 轻巧:只有一个依赖和零个不必要出血.
- 🤝 兼容性: 与 谷歌签名 单位 财务报告和审定财务报表 奥奥特 插件 .
- 📦 可可花和SPM:支持CocoaPods和Swift软件包管理器用于iOS.
- 🔁 最新数据:总是支持最新的Capacitor版本.
缺少一个功能? 刚刚 打开一个问题 我们看看!
使用大小写
Apple Sign-In插件一般用于让用户用自己的Apple ID认证,例如:
- 用户认证: 在Android, iOS和Web的应用程序中提供与 Apple 签名作为登录选项 .
- 账户创建: 使用电子邮件和全名范围在注册时请求用户的电子邮件地址和全名.
- 后端集成:向后端发送授权代码和ID令牌,以验证登录并创建用户会话.
- 安全登录流量:通过一个非ce作为回放保护,和一个用于CSRF保护的状态值.
兼容性
| 插件版本 | 电容版本 | 状态 |
|---|---|---|
| 0.1.x (中文(简体) ) | >=8.x.x | 积极支持 |
指南
安装
你可以用我们的 AI 辅助设置 以安装插件. 添加数据 超级技能 至您的 AI 工具,使用以下命令:
npx skills add capawesome-team/skills --skill capacitor-plugins
然后使用下列提示:
Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-apple-sign-in` plugin in my project.
如果你喜欢 手动设置,通过运行以下命令来安装插件,并遵循下面的平台特定指令:
npm install @capawesome/capacitor-apple-sign-in
npx cap sync
iOS系统
添加数据 用苹果签名 xcode 中的应用程序的能力 :
- 在 Xcode 中打开您的应用目标 .
- 转到 签名能力( C) 选项卡.
- 点击 + 能力 添加 用苹果签名。 。 。 .
网页
插件装入 苹果JS SDK 自动. 确定您配置了您的 Apple 服务ID , 并配置了正确的 URL 和 Web 域名 苹果开发者门户网站。 。 。 .
配置
此插件不需要配置 .
使用量
以下例子显示如何初始化插件并和Apple一起签名.
初始化插件
在Android和Web上,您必须先以您的苹果服务ID初始化插件,然后再拨打 signIn(...)。这种方法只在Android和Web上提供:
import { AppleSignIn } from '@capawesome/capacitor-apple-sign-in';
const initialize = async () => {
await AppleSignIn.initialize({
clientId: 'com.example.app.signin',
});
};
用苹果签名
启动登录流程并接收授权代码和ID标志. 使用 scopes 选项以请求用户的电子邮件地址和全名,并通过一个 nonce 用于回放保护。 这个 redirectUrl 财务报告和审定财务报表 state 选项仅在Android和Web上提供:
import { AppleSignIn, SignInScope } from '@capawesome/capacitor-apple-sign-in';
const signIn = async () => {
const result = await AppleSignIn.signIn({
scopes: [SignInScope.Email, SignInScope.FullName],
redirectUrl: 'https://example.com/callback',
nonce: 'random-nonce',
state: 'random-state',
});
return result;
};
API 密码
初始化(...)
initialize(options: InitializeOptions) => Promise<void>
初始化插件 .
这种方法必须先调用 signIn() 打开 机器人 财务报告和审定财务报表 网页。 。 。 .
仅在Android和Web上提供.
| 参数 | 类型 |
|---|---|
options | InitializeOptions |
自: 0.1.0 (中文(简体) )
签名IN(...)
signIn(options?: SignInOptions | undefined) => Promise<SignInResult>
与苹果公司签约.
| 参数 | 类型 |
|---|---|
options | SignInOptions |
回返情况: Promise<SignInResult>
自: 0.1.0 (中文(简体) )
接口
初始化选项
| Prop | 类型 | 说明 | 自兹 |
|---|---|---|---|
clientId | string | 用于登录的苹果服务ID. | 0.1.0 (中文(简体) ) |
签名结果
| Prop | 类型 | 说明 | 自兹 |
|---|---|---|---|
authorizationCode | string | 授权代码. | 0.1.0 (中文(简体) ) |
idToken | string | 身份标志 (JWT). | 0.1.0 (中文(简体) ) |
user | string | 稳定的苹果用户标识符. 打开 机器人 财务报告和审定财务报表 网页,这是从JWT解码 sub 索赔. | 0.1.0 (中文(简体) ) |
email | string | null | 用户的电子邮件地址. 打开 iOS系统,这个只在第一个登录时提供. | 0.1.0 (中文(简体) ) |
givenName | string | null | 取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取. 打开 iOS系统,这个只在第一个登录时提供. | 0.1.0 (中文(简体) ) |
familyName | string | null | 用户姓. 打开 iOS系统,这个只在第一个登录时提供. | 0.1.0 (中文(简体) ) |
state | string | 签名请求的状态值 。 仅在Android和Web上提供. | 0.1.0 (中文(简体) ) |
realUserStatus | RealUserStatus | 真实用户状态. 仅在iOS上可用. | 0.1.0 (中文(简体) ) |
签名选项
| Prop | 类型 | 说明 | 自兹 |
|---|---|---|---|
redirectUrl | string | OAuth 重定向 URL 用于登录 。 仅在Android和Web上提供. | 0.1.0 (中文(简体) ) |
scopes | SignInScope[] | 登录时请求的范围 . | 0.1.0 (中文(简体) ) |
nonce | string | 用于重放保护的非曲目. | 0.1.0 (中文(简体) ) |
state | string | CSRF保护的状态值. 仅在Android和Web上提供. | 0.1.0 (中文(简体) ) |
数字
用户状态
| 成员 | 数值 | 说明 | 自兹 |
|---|---|---|---|
LikelyReal | 'LIKELY_REAL' | 使用者似乎是一个真实的人. | 0.1.0 (中文(简体) ) |
Unknown | 'UNKNOWN' | 系统无法确定用户是否为真人. | 0.1.0 (中文(简体) ) |
Unsupported | 'UNSUPPORTED' | 此平台不支持真正的用户状态 . | 0.1.0 (中文(简体) ) |
签名范围
| 成员 | 数值 | 说明 | 自兹 |
|---|---|---|---|
Email | 'EMAIL' | 请求用户的电子邮件地址 . | 0.1.0 (中文(简体) ) |
FullName | 'FULL_NAME' | 请求用户全名. | 0.1.0 (中文(简体) ) |
警卫
此插件处理 OAuth 流并返回给您的应用程序的符号 。 为保证融入安全,请注意以下情况:
- 需要服务器侧符号验证 . 这个
idToken(JWT)为: 没有 验证客户端。 您的后端 必须 使用 苹果的公用钥匙 在信任任何权利要求之前(例如:.user, (中文(简体) ),email) (中文(简体) ). 在没有服务器端验证的情况下,从不使用客户端符号数据进行授权决定. - 验证
state参数. 插件通过state值通到结果,但确实 没有 验证它。 您的应用程序必须比较返回的state与它最初发送的用于防范CSRF攻击的值相对应. - Android使用基于WebView的OAuth流. 不同于iOS( 它使用本地
AuthenticationServices),Android执行使得苹果公司在WebView上的登录页面. 与系统浏览器流不同的是,WebView由应用控制并可以访问页面内容. 保证您redirectUrl使用 HTTPS 并指向您控制的一个域.
财务问题
此插件与其他 Apple Sign- In 插件有何不同 ?
这个插件是为Apple Sign-In而专门建造的,专注于提供具有最新平台功能的清洁而现代的API. 以下是一些关键差异:
- 跨平台:支持Android,iOS,和Web.
- 轻巧: 无不必要的依赖。 只是苹果签入,没有别的.
- 无折旧的 API: 使用最新的平台API(iOS上的认证服务).
- 范围支助:在所有平台上请求电子邮件和全名.
- 错误代码: 为正确处理错误提供打出的错误代码.
我是否需要在iOS上呼叫初始化?
不,那个 initialize(...) 方法只在Android和Web上可用,必须先调用 signIn(...) 设置 Apple 服务标识。 在iOS上,插件使用本地认证服务框架,不需要初始化.
为什么邮件和名字只在iOS上的第一个登录时返回?
在iOS上,苹果公司只提供用户的电子邮件地址,给定名和姓氏在第一个登录上;在之后的登录上,这些值是 null。当您第一次收到这些信息时,请务必坚持这些信息,例如在您的后端.
我能用这个插件吗? 有Ionic、React、Vue或Angular?
是的,插件是框架不可知的。 它在任意网络框架的Capacitor app中工作,包括有Angular,React,或Vue的Ionic,以及平版JavaScript等项目.
相关插件
- 脸书签名 单位: 与Facebook签约.
- 谷歌签名 单位:与谷歌签约.
- 奥奥特: 与OAuth 2.0和OpenID Connection 供应商通信.
- 密码:根据WebAuthn标准创建并认证了密码.
通讯
随时更新有关卡帕韦索姆、Capacitor和Ionic生态系统的最新消息和最新消息,因为我们 《卡帕索克通讯》。 。 。 .
更改日志
见 变动情况。 。 。 .
许可证
见 自由主义。 。 。 .
[^1]: 本项目不隶属于苹果公司或其任何子公司或子公司,不获其认可,不获其赞助或批准.