Azure AD B2C重定向URI报错:请求缺少client_id参数咨询
替换占位符client_id
代码里的'client_id'是占位符,必须换成Azure应用注册里的实际客户端ID(即Application (client) ID),这个ID在Azure门户应用注册的概述页面就能找到,直接复制粘贴过来。核对重定向URI一致性
确保Flutter代码里的com.test.azure_test/oauth2_redirect和Azure应用注册中配置的重定向URI完全一致,包括大小写、前缀后缀。注意移动/桌面应用的重定向URI格式要对应你的Flutter应用包名,不能有任何差异。验证认证端点正确性
检查授权和令牌端点里的租户名、策略名是否和Azure里的配置匹配。比如testOrg.onmicrosoft.com是你的租户域名,B2C_1_signupsignin是你的用户流/自定义策略名称,下划线、大小写都不能错,错一个字符都会导致参数缺失或端点无效。完善平台特定配置
Android端要在AndroidManifest.xml里添加对应重定向URI的intent-filter,确保应用能捕获认证回调;iOS端需要在Info.plist中配置CFBundleURLTypes,把重定向URI加进去。同时确认flutter_appAuth用的是最新稳定版,避免版本兼容问题。忽略直接访问重定向URI的报错
重定向URI是给认证服务回调用的,直接在浏览器打开必然会提示缺少参数,这是正常现象,不用管它,只要通过flutter_appAuth发起的认证流程能正常跳转就行。
修正后的示例代码:
onPressed: () async { FlutterAppAuth appAuth = const FlutterAppAuth(); final AuthorizationTokenResponse? result = await appAuth.authorizeAndExchangeCode( AuthorizationTokenRequest( // 替换成Azure应用注册里的实际客户端ID 'your-actual-client-id-here', 'com.test.azure_test/oauth2_redirect', serviceConfiguration: const AuthorizationServiceConfiguration( authorizationEndpoint: 'https://testOrg.b2clogin.com/testOrg.onmicrosoft.com/B2C_1_signupsignin/oauth2/v2.0/authorize', tokenEndpoint: 'https://testOrg.b2clogin.com/testOrg.onmicrosoft.com/B2C_1_signupsignin/oauth2/v2.0/token' ), scopes: ['openid','offline_access','api'], ), ); print(result); },
内容的提问来源于stack exchange,提问作者Sumchans

