我有以下客户:
new Client
{
ClientId = "nativeapptest",
ClientName = "Native App Test",
Enabled = true,
RequireClientSecret = false,
AllowedGrantTypes = GrantTypes.Code,
RedirectUris = { "com.mysite.nativeapp.12365789785256-buv2dwer7jjjjv5fckasdftn367psbrlb:/home" },
AllowedScopes =
{
IdentityServerConstants.StandardScopes.OpenId,
IdentityServerConstants.StandardScopes.Profile,
"MyScope"
},
RequirePkce = false,
AllowOfflineAccess = true,
RequireConsent = false
}
我正在使用本机脚本构建一个可以使用 Identity Server 4 登录的 Android 应用程序。当前发生的情况是,我通过打开浏览器并使用所有正确的 OpenID 配置向 IS4 发出请求,最终出现在登录屏幕上然后我选择使用谷歌登录。一旦进入谷歌,我输入我的电子邮件和密码,一切都很好,然后谷歌尝试将我发送回我的网站,但它只是挂起......它是一个没有加载任何内容的白色页面,它只是永远坐在那里,没有错误据我所知,is4 记录的消息。
上面的 nativescript 的登录部分来自 OAutho2 库https://www.npmjs.com/package/nativescript-oauth2 https://www.npmjs.com/package/nativescript-oauth2
我试图了解这是否是 IS4 或本机 Android 应用程序的问题。页面挂起是因为它正在等待 Android 应用程序接管登录工作吗?也许问题出在 RedirectURI 方案上?
它挂在的URL如下:
EDIT:
由于我在实际服务器上运行它,因此我无法直接调试它,但是,我确实添加了日志来查看代码的运行情况。我的日志告诉我用户是通过谷歌和我的系统登录的,我的日志还显示ExternalCallback已将页面重定向到
/connect/authorize/callback?client_id=nativeapptest&response_type=code&redirect_uri=com.mysite.nativeapp%3A%2F%2Fhome&scope=openid%20profile%20MyScope&response_mode=query&state=abcd
此时,页面挂起。
请注意,我们将 RedirectUri 更改为 com.mysite.nativeapp 以帮助测试。
最后,我不确定这是否重要,但我们没有使用 https,因为这仍然是开发阶段。