Salesforce Mobile SDK 基础

Salesforce Mobile SDK 让你用原生或 Web 技术构建面向员工、客户、伙伴的自定义移动应用,经 App Store 或 Google Play 分发。本文覆盖 SDK 的核心特性——企业身份与安全、AES-256 加密的 SmartStore、Mobile Sync、移动服务,并深入 OAuth 2.0 认证、外部客户端应用、应用锁与 scope 配置。...

📅 2026/10/11 ✍️ ponybai 🏷️ salesforce, headless

Salesforce Mobile SDK 入门(01 Get Started with Salesforce Mobile SDK)

slide_2
slide_3

本单元奠定基础。我们比较 Mobile SDK 开发与在 Salesforce 应用上构建的区别,纵览 SDK 提供的特性与服务,并了解原生应用开发及要用的工具。

完成本单元后,你将能够:

  • 解释 Salesforce Mobile SDK 与 Salesforce 应用开发的区别;
  • 描述 Salesforce Mobile SDK 提供的特性。

Salesforce Mobile SDK 开发简介(Introduction to Salesforce Mobile SDK Development)

slide_4

移动设备已成为我们工作和生活不可或缺的一部分,人们在不同联网设备上创建和消费数据。为应对在移动设备上运营业务的挑战,Salesforce 提供了 Lightning Platform,它在各种移动技术上保证企业级的可靠性、可用性和安全性。

Lightning Platform 提供两种最基础、最全面的移动应用构建与部署选项:

  • Salesforce 应用——现成的移动应用;
  • Salesforce Mobile SDK——让开发者构建自定义移动应用,可面向员工、客户或伙伴,经 App Store 或 Google Play 分发,用原生或 Web 技术构建,并享有与 Salesforce 应用同等可靠性和安全性。

特性与服务(一):身份、SmartStore 与 Sync(Features and Services (1): Identity, SmartStore, and Sync)

slide_5

Mobile SDK 通过模块化架构提供完整开发体验:

  • 企业身份与安全——完整实现 Salesforce External Client App Policy,支持 SAML 和高级认证流程,让管理员始终掌控数据访问;
  • SmartStore 加密数据库——在本地存取数据、支持灵活数据模型,用 AES-256 加密确保数据始终受保护,适合高响应、任意网络条件下的应用;
  • Mobile Sync——用简单 API 在离线数据库与 Salesforce 云之间同步数据,让开发者专注 UI 和业务逻辑,把复杂同步交给 SDK。

特性与服务(二):移动服务与平台(Features and Services (2): Mobile Services and Platforms)

slide_6

SDK 还提供:

  • 移动服务——推送通知、地理定位、分析、协作工具、云端业务逻辑等平台移动服务,能增强应用并减少开发时间;
  • Salesforce Experience Cloud 站点——用它可构建面向客户和伙伴的移动应用,享受与员工应用同样的企业特性和可靠性;
  • iOS 和 Android——支持两大主流移动操作系统上的开发。

关于原生应用开发(About Native App Development)

slide_7

Mobile SDK 让你在 iOS 和 Android 上开发原生应用,使用各平台自己的开发工具和语言:

  • iOS → Xcode,用 Swift 或 Objective-C;
  • Android → Android Studio,用 Java 或 Kotlin。

为什么选原生?最高性能,以及对 OS 和设备功能的完整支持——这对高要求界面和丰富交互至关重要。

访问设备功能(Access to Device Features)

slide_8

原生应用能直接访问设备能力:

  • 快速图形 API——处理大量数据、需要快速刷新时至关重要;
  • 流畅动画——游戏、高度交互的报表、照片和声音处理应用需要;
  • 内置组件——相机、通讯录、地理定位等设备原生功能可无缝集成,还有 OS 内置的加密存储;
  • 易用性——用户偏爱原生应用的性能、外观和手感,加上他们期待的设备功能,应用就更好用。

强大的开发工具(Powerful Development Tools)

slide_9

原生开发需要集成开发环境(IDE)。Mobile SDK 支持 Xcode(iOS)和 Android Studio(Android)。IDE 提供构建、调试、项目管理、版本控制等专业开发工具。在这些环境里,开发者能享受:

  • 成熟的 API 和框架;
  • 通过成熟框架和组件轻松实现视觉效果;
  • 专业的调试技术。

探索安全与认证(02 Explore Security and Authentication)

slide_10
slide_11

本单元让你的应用更安全。我们覆盖 OAuth 2.0 及其术语、走一遍认证流程、并展示外部客户端应用和 scope 设置如何管控访问——以及如何创建一个。

完成本单元后,你将能够:

  • 识别 Salesforce 应用中使用的安全与认证方法;
  • 描述用外部客户端应用把移动应用与 Salesforce 服务器集成;
  • 解释基本的 OAuth 术语;
  • 概述 OAuth 认证与 PIN 安全的事件流程。

用 OAuth 2.0 保护并认证你的移动应用(Secure and Authenticate with OAuth 2.0)

slide_12

安全认证对企业移动应用至关重要。OAuth 2.0 是行业标准协议,能在不交出用户名密码的情况下实现数据访问授权,常被比作软件的「代客泊车钥匙」——代客钥匙让泊车员能开车,却不能打开后备箱或手套箱。

Mobile SDK 内嵌 Salesforce OAuth 2.0 实现:HTML 视图收集用户名密码并发送到服务器,服务器返回一个会话令牌和一个持久刷新令牌,存储在设备上供后续交互使用。

Salesforce 外部客户端应用是移动应用连接 Salesforce 的主要方式,让开发者和管理员都能控制应用如何连接、谁能访问(例如限制客户集合、设置或放宽 IP 范围等)。

熟悉 OAuth 术语(Get Familiar with OAuth Terminology)

slide_13

OAuth 有自己的词汇表(注意:「consumer」总是指 Mobile SDK 应用):

  • Consumer Key(client_id)——应用向 Salesforce 标识自己的值;
  • Access Token(访问令牌)——应用代表用户访问受保护资源的凭证,本质是可直接使用的会话 ID;
  • Refresh Token(刷新令牌)——无需用户再次批准即可获取新访问令牌;
  • Authorization Code(授权码)——代表用户授权、存活时间短的令牌,用于换取访问令牌和刷新令牌;
  • External Client App(外部客户端应用)——Salesforce 外部、用 OAuth 协议同时验证 Salesforce 用户和外部应用的应用。

OAuth2 认证流程(一):首次授权流程(Authentication Flow (1): First-Time)

slide_14

OAuth 授权期间的事件流程取决于设备上的认证状态。首次授权流程:

  1. 客户打开 Mobile SDK 应用;
  2. 出现认证提示;
  3. 客户输入用户名和密码;
  4. 应用把凭据发送给 Salesforce,收到会话 ID 作为认证成功确认;
  5. 客户批准应用请求的访问授权;
  6. 应用启动。

此后令牌被存储,后续启动会快得多。

OAuth2 认证流程(二):持续授权(Authentication Flow (2): Ongoing)

slide_15

回访用户几乎察觉不到认证:

  1. 客户打开移动应用;
  2. 如果会话 ID 仍有效,应用立即启动;
  3. 如果会话 ID 已过期,应用用首次授权时保存的刷新令牌获取更新的会话 ID;
  4. 应用启动。

这正是刷新令牌存在的意义——无需再次提示用户,实现无缝的持续访问。

应用锁安全(App-Lock Security)

slide_16

应用锁为敏感数据增加一层保护:配置后,应用在后台停留指定时间后会锁定,重新打开时提示用户进行操作系统的生物识别或加密质询(指纹、面容、PIN 或密码)。

启用方式:开发者在创建外部客户端应用时勾选 Screen Lock 复选框,移动管理员随后可自定义超时时长。

OAuth2 Web Server 流程(OAuth2 Web Server Flow)

slide_17

为了更高的安全性,Salesforce 推荐使用 Web Server 流程,因为它包含 Proof Key Code Exchange(PKCE)。PKCE 给授权交换增加了一个加密验证器/质询步骤,使被拦截的授权码无法被攻击者重放。对移动应用集成来说,这是更安全的选择,优先于更简单的流程。

OAuth2 User-Agent 流程(OAuth2 User-Agent Flow)

slide_18

在 user-agent 流程中,外部客户端应用通过 HTTP 重定向接收访问令牌:Salesforce 把 user-agent 重定向到 Web 服务器或可访问的本地资源,由它提取令牌。为安全,令牌以 URL 上的 # 哈希片段形式提供,避免经 referral header 传给其它服务器。

警告:因为令牌编码在重定向 URL 里,它可能暴露给用户和设备上的其它应用;此流程不使用 client secret(客户端可执行文件在用户设备上,可被检查)。

Scope 参数值(Scope Parameter Values)

slide_19

OAuth 需要在服务端和客户端两侧配置 scope,两侧的约定构成 scope 契约:

  • 服务端——在 Salesforce 的外部客户端应用里定义 scope 权限,决定客户端应用可请求的访问级别。至少让 OAuth 设置与代码一致,大多数应用 refresh_token、web、api 就够用;
  • 客户端——在 Mobile SDK 应用里指定 scope 请求,必须是外部客户端应用 scope 权限的子集。Mobile SDK 13.2 及以后,不提供 scope 则授予所有服务端配置的 scope。

外部客户端应用(External Client Apps)

slide_20

外部客户端应用是可打包的框架,让第三方应用用 API 和安全协议与 Salesforce 集成。它们还提供:分离用户角色的结构性改进,以及第二代托管打包支持。

Salesforce 推荐使用外部客户端应用,并把现有的本地连接应用迁移过去。注意:某些功能仅连接应用支持,跨多个组织运行的 Mobile SDK 应用仍需连接应用。

创建外部客户端应用(Create an External Client App)

slide_21

你需要管理员权限(Developer Edition 或 Trailhead Playground 里自动具备)。步骤:

  1. Setup → 搜索 Apps → 选择 External Client Apps Manager → New External Client App;
  2. Basic Information:Name 填 Trailhead Intro,Contact Email 填你的邮箱,Distribution State 选 Local(本地)或 Packaged(打包分发);
  3. 在 API 下勾选 Enable OAuth;
  4. Callback URL 填任意 URL 字符串(真实或虚构均可),如 mysampleapp://auth/success;
  5. 添加 scope:api、web、refresh_token(或 offline_access),点击 Add 箭头移入 Selected OAuth Scopes;
  6. 取消勾选 Require Secret for Web Server Flow 和 Require Secret for Refresh Token Flow;
  7. (推荐)勾选 Issue JSON Web Token (JWT)-based access tokens for named users;
  8. 点击 Create。

完成后建议继续完成 Set Up Your Mobile SDK Developer Tools 徽章。


文章来源:Trailhead - Salesforce Mobile SDK Basics