gpt4 book ai didi

android - 如何使用来自 Google 的 OAuth 回调来避免 "Complete action with"弹出窗口?

转载 作者:太空宇宙 更新时间:2023-11-03 10:49:13 24 4
gpt4 key购买 nike

我正在玩弄 OpenID Connect 和 OAuth,我想支持多个 OpenID 提供商(因此不仅仅是 AccountManager 已知的提供商)。但是,我遇到了这个问题。

当作为已安装的应用程序针对 Google 进行身份验证时,您将(由 Google)预定义的回调地址传递给 http://localhost。因此,我通过像这样重定向到 Google 的端点来启动 OAuth 流程:

String url = "https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile&state=%2F&redirect_uri=http%3A%2F%2Flocalhost%3A9999&response_type=code&client_id=000000000000000.apps.googleusercontent.com";
Intent i = new Intent (Intent.ACTION_VIEW);
i.setData (Uri.parse (url));
startActivity (i);

请注意,我按要求传递了 redirect_uri(端口 9999,这是允许的)。我已注册我的应用程序以响应正在加载的此类地址,如下所示:

<data android:scheme="http" android:host="localhost" android:port="9999" />

但是,这会导致系统显示“完成操作”对话框:

enter image description here

因此,由于手机的 9999 端口上没有任何监听,如果用户选择浏览器,浏览器将显示一个错误页面,整个身份验证流程将被破坏。

我怎样才能避免这种情况?

最佳答案

尝试使重定向 url 具有不同的方案,例如应用程序://本地主机。所有浏览器都注册为 httphttps 的处理程序,因此这部分问题无法解决。但是,如果重定向 URL 可以有一个非标准方案,您的问题就很容易解决。发明你自己的方案并使用它(很多应用程序都这样做,例如 Facebook 有 fb:// 链接)。

关于android - 如何使用来自 Google 的 OAuth 回调来避免 "Complete action with"弹出窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16940713/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com