快速入门:在示例移动应用中登录用户

员工租户配置适用于员工、内部应用和其他组织资源。

在本快速入门中,你将下载并运行一个代码示例,该示例演示 Android 应用程序如何让用户登录并获取访问令牌来调用 Microsoft Graph API。

应用程序必须由 Microsoft Entra ID 中的应用对象表示,这样 Microsoft 标识平台便可以为应用程序提供令牌。

先决条件

  • 拥有有效订阅的 Azure 帐户。 如果还没有帐户,请创建一个帐户
  • Azure 帐户必须拥有管理应用程序的权限。 以下任何Microsoft Entra 角色都包含所需的权限:
    • 应用程序管理员
    • 应用程序开发人员
  • 工作人员租户。 可以使用默认目录或 设置新租户
  • Microsoft Entra 管理中心中注册一个新的应用程序,该应用程序配置为适用于 任何组织目录中的帐户。 有关更多详细信息 ,请参阅注册应用程序 。 在应用程序 概述 页中记录以下值供以后使用:
    • 应用程序(客户端)ID
    • 目录(租户)ID
  • Android Studio
  • Android 16+

添加重定向 URI

必须在应用注册中配置特定的重定向 URI,以确保与下载的代码示例兼容。 这些 URI 对于在用户成功登录后将用户重定向回应用至关重要。

  1. 在“管理”下,选择“身份验证”“添加平台”“Android” 。

  2. 根据你在上面下载的示例类型输入项目的包名称。

    • Java 示例 - com.azuresamples.msalandroidapp
    • Kotlin 示例 - com.azuresamples.msalandroidkotlinapp
  3. 在“配置 Android 应用”窗格的“签名哈希”部分,点击“生成开发签名哈希”,并将 KeyTool 命令复制到命令行。

    • 安装 KeyTool.exe,使其作为 Java 开发工具包 (JDK) 的一部分。 还必须安装 OpenSSL 工具才能执行 KeyTool 命令。 有关详细信息,请参阅 有关生成密钥的 Android 文档
  4. 输入由 KeyTool 生成的签名哈希

  5. 选择“配置”并保存在“Android 配置”窗格中出现的“MSAL 配置”,以便稍后配置应用时输入该内容。

  6. 选择“完成”。

下载示例应用

配置示例应用程序

  1. 在 Android Studio 的项目窗格中,导航到 app\src\main\res

  2. 右键单击“res”,选择“新建”>“目录”。 输入 raw 作为新目录名称,然后选择“确定”。

  3. 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"
          }
        }
      ]
    }
    
  4. 打开 /app/src/main/AndroidManifest.xml 文件。

  5. 查找占位符:

    • enter_the_signature_hash 并将其替换为之前添加平台重定向 URL 时生成的 签名哈希

    由于本教程仅演示如何在单帐户模式下配置应用,请参阅 单帐户与多帐户模式配置应用 以获取详细信息

运行示例应用

从 Android Studio 的“可用设备”下拉列表中选择仿真器或物理设备,然后运行应用。

示例应用将在“单帐户模式”屏幕上启动。 默认情况下,会提供默认范围 user.read,在调用 Microsoft Graph API 期间读取你自己的配置文件数据时,将使用该范围。 默认提供 Microsoft Graph API 调用的 URL。 您可以根据需要更改这两个内容。

MSAL 示例应用的屏幕截图显示单帐户和多帐户的用法。

使用应用菜单可在单帐户和多帐户模式之间切换。

在单帐户模式下,使用工作或家庭帐户登录:

  1. 选择“以交互方式获取图形数据”,以提示用户输入其凭据。 在屏幕底部可以看到调用 Microsoft Graph API 后的输出。
  2. 登录后,选择“以无提示方式获取图形数据”,以便在不再次提示用户输入凭据的情况下调用 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 应用。