员工租户配置适用于员工、内部应用和其他组织资源。
在本快速入门中,你将下载并运行一个代码示例,该示例演示 Android 应用程序如何让用户登录并获取访问令牌来调用 Microsoft Graph API。
应用程序必须由 Microsoft Entra ID 中的应用对象表示,这样 Microsoft 标识平台便可以为应用程序提供令牌。
先决条件
- 拥有有效订阅的 Azure 帐户。 如果还没有帐户,请创建一个帐户。
- Azure 帐户必须拥有管理应用程序的权限。 以下任何Microsoft Entra 角色都包含所需的权限:
- 应用程序管理员
- 应用程序开发人员
- 工作人员租户。 可以使用默认目录或 设置新租户。
- 在 Microsoft Entra 管理中心中注册一个新的应用程序,该应用程序配置为适用于 任何组织目录中的帐户。 有关更多详细信息 ,请参阅注册应用程序 。 在应用程序 概述 页中记录以下值供以后使用:
- 应用程序(客户端)ID
- 目录(租户)ID
- Android Studio
- Android 16+
添加重定向 URI
必须在应用注册中配置特定的重定向 URI,以确保与下载的代码示例兼容。 这些 URI 对于在用户成功登录后将用户重定向回应用至关重要。
在“管理”下,选择“身份验证”“添加平台”“Android” 。
根据你在上面下载的示例类型输入项目的包名称。
- Java 示例 -
com.azuresamples.msalandroidapp
- Kotlin 示例 -
com.azuresamples.msalandroidkotlinapp
- Java 示例 -
在“配置 Android 应用”窗格的“签名哈希”部分,点击“生成开发签名哈希”,并将 KeyTool 命令复制到命令行。
- 安装 KeyTool.exe,使其作为 Java 开发工具包 (JDK) 的一部分。 还必须安装 OpenSSL 工具才能执行 KeyTool 命令。 有关详细信息,请参阅 有关生成密钥的 Android 文档。
输入由 KeyTool 生成的签名哈希。
选择“配置”并保存在“Android 配置”窗格中出现的“MSAL 配置”,以便稍后配置应用时输入该内容。
选择“完成”。
下载示例应用
配置示例应用程序
在 Android Studio 的项目窗格中,导航到 app\src\main\res。
右键单击“res”,选择“新建”>“目录”。 输入
raw
作为新目录名称,然后选择“确定”。在 app>src>main>res>raw 中,转到名为
auth_config_single_account.json
的 JSON 文件,然后粘贴以前保存的 MSAL 配置。在“重定向 URI”下方,粘贴:
"account_mode" : "SINGLE",
配置文件应与如下示例类似:
{ "client_id": "00001111-aaaa-bbbb-3333-cccc4444", "authorization_user_agent": "WEBVIEW", "redirect_uri": "msauth://com.azuresamples.msalandroidapp/00001111%cccc4444%3D", "broker_redirect_uri_registered": false, "account_mode": "SINGLE", "authorities": [ { "type": "AAD", "audience": { "type": "AzureADMultipleOrgs", "tenant_id": "common" } } ] }
打开 /app/src/main/AndroidManifest.xml 文件。
查找占位符:
enter_the_signature_hash
并将其替换为之前添加平台重定向 URL 时生成的 签名哈希 。
运行示例应用
从 Android Studio 的“可用设备”下拉列表中选择仿真器或物理设备,然后运行应用。
示例应用将在“单帐户模式”屏幕上启动。 默认情况下,会提供默认范围 user.read,在调用 Microsoft Graph API 期间读取你自己的配置文件数据时,将使用该范围。 默认提供 Microsoft Graph API 调用的 URL。 您可以根据需要更改这两个内容。
使用应用菜单可在单帐户和多帐户模式之间切换。
在单帐户模式下,使用工作或家庭帐户登录:
- 选择“以交互方式获取图形数据”,以提示用户输入其凭据。 在屏幕底部可以看到调用 Microsoft Graph API 后的输出。
- 登录后,选择“以无提示方式获取图形数据”,以便在不再次提示用户输入凭据的情况下调用 Microsoft Graph API。 在屏幕底部可以看到调用 Microsoft Graph API 后的输出。
在多帐户模式下,可以重复相同的步骤。 此外,还可以删除登录的帐户,这也会删除该帐户的缓存令牌。
示例的工作原理
代码已组织成多个片段,演示如何编写单帐户和多帐户 MSAL 应用。 代码文件的组织方式如下:
文件 | 演示 |
---|---|
主活动 | 管理用户界面 |
MSGraphRequestWrapper | 使用 MSAL 提供的令牌调用 Microsoft Graph API |
MultipleAccountModeFragment | 初始化多帐户应用程序,加载用户帐户,并获取用于调用 Microsoft Graph API 的令牌 |
SingleAccountModeFragment | 初始化单帐户应用程序,加载用户帐户,并获取用于调用 Microsoft Graph API 的令牌 |
res/auth_config_multiple_account.json | 多帐户配置文件 |
res/auth_config_single_account.json | 单帐户配置文件 |
Gradle Scripts/build.grade (Module:app) | 此处添加了 MSAL 库依赖项 |
现在让我们更详细地探讨这些文件,并调用每个文件中 MSAL 特定的代码。
后续步骤
继续学习 Android 教程,在该教程中,你将生成一个从 Microsoft 标识平台获取访问令牌并使用它来调用 Microsoft Graph API 的 Android 应用。