我希望在 Flutter 应用程序中使用 Microsoft 身份验证

Nee*_*raj 5 dart social-authentication flutter

我想在我的 flutter 应用程序中与 Google 和 Facebook 一起提供 Microsoft 身份验证。我找到了 Google 和 Facebook 的文档,但找不到 Microsoft auth 的任何资源或文档。任何帮助都将非常重要。

小智 1

抱歉,如果这个答案迟到了,它可能会帮助其他面临同样问题的人。我遵循了一种简单的技术来克服 Microsoft 身份验证,最后您将收到用户邮件 ID 以及声明应用程序时根据权限设置的其他详细信息。

有一个flutter包https://pub.dev/packages/flutter_web_auth

在继续之前,您需要向 Azure Active Directory 注册应用程序https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/CreateApplicationBlade/isMSAApp~/false

配置flutter登录方式

final url = Uri.https('login.microsoftonline.com', '/your-tenant ID/oauth2/v2.0/authorize', {
  'response_type': 'token',
  'client_id': 'your Client ID',
  'redirect_uri': redirectUrl,
  'scope': 'https://graph.microsoft.com/openid',
});

// This method will return the authorization code which needs to exchanged for user details

final result = await FlutterWebAuth.authenticate(url: url.toString(), callbackUrlScheme: redirectUrl);
// Extract code from resulting url
Run Code Online (Sandbox Code Playgroud)

您可以根据安全级别获取访问代码或令牌。更多解释可以在以下位置找到: https://learn.microsoft.com/en-us/azure/active-directory/develop/app-sign-in-flow

对于我的方法,我从 Azure AD 获取令牌并与此 API 交换以获取用户详细信息

final details = await http.get(Uri.parse("https://graph.microsoft.com/oidc/userinfo"),
  headers: {
    "Authorization" : "Bearer "+accessCode,
  });
Run Code Online (Sandbox Code Playgroud)

您可以使用这些详细信息来验证用户身份并启用功能。在 Azure AD 中,您可以定义谁可以使用登录机制,例如组织或常规。

希望这可以帮助。