flutter_appauth:正确的 redirect_uri 是什么?
flutter_appauth: What's the correct redirect_uri?
如果我这里有什么不对的地方请指正。我有一个 IdentityServer4(这是 .NET 的 OIDC 实现),客户端定义如下:
new Client
{
ClientId = "flutterclient",
AllowedGrantTypes = GrantTypes.Code,
ClientSecrets = new List<Secret> { new Secret("fluttersecret".Sha256()) },
AllowedScopes = new List<string>
{
IdentityServerConstants.StandardScopes.OpenId,
IdentityServerConstants.StandardScopes.Profile,
},
RedirectUris = { "com.example.flutter_client://oidccallback" }, // Is this correct?
AllowOfflineAccess = true,
}
我目前只是在模拟器上试用,我可以在 phone 上访问位于 https://10.0.2.2:5001/.well-known/openid-configuration 的发现文档,所以我确信模拟器能够与我的对话国内流离失所者。
现在,我不太确定我需要在 flutter_appauth 中输入什么参数:
// The flutter's code, trying to sign in
final AuthorizationTokenResponse result = await _appAuth.authorizeAndExchangeCode(
AuthorizationTokenRequest(
'flutterclient',
'????', // What should I put here as redirect URI?
clientSecret: 'fluttersecret',
serviceConfiguration: AuthorizationServiceConfiguration('https://10.0.2.2:5001/connect/authorize', 'https://10.0.2.2:5001/connect/token'),
scopes: <String>['openid', 'profile'],
preferEphemeralSession: false,
),
);
// The gradle's definition
defaultConfig {
applicationId "com.example.flutter_client"
minSdkVersion 18
targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
manifestPlaceholders = [
'appAuthRedirectScheme': '10.0.2.2:5001' // Is this correct?
]
}
尤其是 AuthorizationTokenRequest 的 'redirect_uri' 参数,我试过 'https://10.0.2.2:5001:/oauthredirect', '10.0.2.2:5001:/oauthredirect' 每次 IDP 都会告诉我我有一个格式错误 redirect_uri。什么是正确的?我的其他参数是否正确?
'appAuthRedirectScheme'由开发者自己定义。一旦定义,只需在 IS4 的 Client.RedirectUris.
上使用相同的值
- 确保您的 applicationId 和 appAuthRedirectScheme 不包含“_”或大写字符。
- 请确保您的应用程序包名称在身份服务器中相同 com.appname.xyz://login-callback ,注意 ://login-callback
- 在 appAuthRedirectScheme 中只放 applicationId 而没有://login-callback。
代码的其他部分保持不变。
如果我这里有什么不对的地方请指正。我有一个 IdentityServer4(这是 .NET 的 OIDC 实现),客户端定义如下:
new Client
{
ClientId = "flutterclient",
AllowedGrantTypes = GrantTypes.Code,
ClientSecrets = new List<Secret> { new Secret("fluttersecret".Sha256()) },
AllowedScopes = new List<string>
{
IdentityServerConstants.StandardScopes.OpenId,
IdentityServerConstants.StandardScopes.Profile,
},
RedirectUris = { "com.example.flutter_client://oidccallback" }, // Is this correct?
AllowOfflineAccess = true,
}
我目前只是在模拟器上试用,我可以在 phone 上访问位于 https://10.0.2.2:5001/.well-known/openid-configuration 的发现文档,所以我确信模拟器能够与我的对话国内流离失所者。
现在,我不太确定我需要在 flutter_appauth 中输入什么参数:
// The flutter's code, trying to sign in
final AuthorizationTokenResponse result = await _appAuth.authorizeAndExchangeCode(
AuthorizationTokenRequest(
'flutterclient',
'????', // What should I put here as redirect URI?
clientSecret: 'fluttersecret',
serviceConfiguration: AuthorizationServiceConfiguration('https://10.0.2.2:5001/connect/authorize', 'https://10.0.2.2:5001/connect/token'),
scopes: <String>['openid', 'profile'],
preferEphemeralSession: false,
),
);
// The gradle's definition
defaultConfig {
applicationId "com.example.flutter_client"
minSdkVersion 18
targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
manifestPlaceholders = [
'appAuthRedirectScheme': '10.0.2.2:5001' // Is this correct?
]
}
尤其是 AuthorizationTokenRequest 的 'redirect_uri' 参数,我试过 'https://10.0.2.2:5001:/oauthredirect', '10.0.2.2:5001:/oauthredirect' 每次 IDP 都会告诉我我有一个格式错误 redirect_uri。什么是正确的?我的其他参数是否正确?
'appAuthRedirectScheme'由开发者自己定义。一旦定义,只需在 IS4 的 Client.RedirectUris.
上使用相同的值- 确保您的 applicationId 和 appAuthRedirectScheme 不包含“_”或大写字符。
- 请确保您的应用程序包名称在身份服务器中相同 com.appname.xyz://login-callback ,注意 ://login-callback
- 在 appAuthRedirectScheme 中只放 applicationId 而没有://login-callback。
代码的其他部分保持不变。