您可以使用 Firebase SDK 执行端到端 OAuth 2.0 登录流程,让您的用户可使用自己的 Apple ID 进行 Firebase 身份验证。
准备工作
如需让用户能够通过 Apple 账号登录,首先需在 Apple 的开发者网站上配置“通过 Apple 登录”功能,然后启用 Apple 作为您的 Firebase 项目的登录服务提供方。
加入 Apple Developer Program
“通过 Apple 登录”功能只能由 Apple Developer Program 的成员配置。
配置“通过 Apple 登录”
您必须在 Firebase 项目中启用并正确配置 Apple 登录。Android 平台与 Apple 平台的配置不同。请先按照 Apple 平台和/或 Android 指南中的“配置‘通过 Apple 登录’功能”部分操作,然后再继续。启用 Apple 作为登录提供方
- 在 Firebase 控制台中,打开 Auth 部分。在登录方法标签页中,启用 Apple 提供方。
- 配置 Apple 登录提供方设置:
- 如果您仅在 Apple 平台上部署应用,则可以将“服务 ID”、“Apple 团队 ID”、“私钥”和“密钥 ID”字段留空。
- 对于 Android 设备的支持:
- 将 Firebase 添加到您的 Android 项目。当您在 Firebase 控制台中设置应用时,请务必注册应用的 SHA-1 签名。
- 在 Firebase 控制台中,打开 Auth 部分。在登录方法标签页中,启用 Apple 提供方。指定您在上一部分中创建的服务 ID。此外,在“OAuth 代码流程配置”部分中,指定您的 Apple 团队 ID 以及您在上一部分中创建的私钥和密钥 ID。
符合 Apple 匿名数据要求
如果在登录时选择“通过 Apple 登录”,用户便可对其数据(包括电子邮件地址)进行匿名化处理。选择此选项的用户会拥有使用 privaterelay.appleid.com 网域的电子邮件地址。当您在应用中使用“通过 Apple 登录”时,必须遵守有关这些匿名化 Apple ID 的任何适用的 Apple 开发者政策或条款。
条款内容包括必须首先征得相关用户的同意,才能将能直接识别的个人信息与匿名化的 Apple ID 相关联。使用 Firebase Authentication 时,可能包括以下操作:
- 将电子邮件地址关联至匿名化的 Apple ID,或者将匿名化的 Apple ID 关联至电子邮件地址。
- 将电话号码关联至匿名化的 Apple ID,或者将匿名化的 Apple ID 关联至电话号码。
- 将非匿名社交凭据(Facebook、Google 等)关联至匿名化的 Apple ID,或者将匿名化的 Apple ID 关联至非匿名社交凭据。
以上所列并非全部操作。请参阅您的开发者账号对应的“成员资格”部分中的“Apple Developer Program 许可协议”,确保您的应用符合 Apple 的要求。
访问 firebase::auth::Auth 类
Auth 类是所有 API 调用都需要通过的门户。- 添加 Auth 和 App 头文件:
#include "firebase/app.h" #include "firebase/auth.h"
- 在您的初始化代码中,创建一个
firebase::App类。#if defined(__ANDROID__) firebase::App* app = firebase::App::Create(firebase::AppOptions(), my_jni_env, my_activity); #else firebase::App* app = firebase::App::Create(firebase::AppOptions()); #endif // defined(__ANDROID__)
- 获取您的
firebase::App对应的firebase::auth::Auth类。App和Auth是一对一的映射关系。firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
使用 Firebase SDK 处理登录流程
“通过 Apple 登录”的过程因 Apple 和 Android 平台而异。