gpt4 book ai didi

android - 使用 Android 应用链接作为 OAuth2 重定向 URI

转载 作者:行者123 更新时间:2023-12-04 23:49:54 26 4
gpt4 key购买 nike

是否可以使用以https://开头的Android App Links?如:https://my-app.com/callback在 OAuth2 流程结束时从 Android WebView 重定向回我的应用程序?我知道正常的深层链接是如何工作的,例如 com.my-app://my-app://可用于重定向回我的应用程序。根据我的理解,WebView 不知道如何处理此类协议(protocol),将请求传递给操作系统,如果在 AndroidManifest.xml 中提供了足够的 IntentFilter,则操作系统将请求传递给处理此 url 的应用程序。 .
这可以通过 https:// 来完成吗?方案或重定向将始终被 WebView 捕获,并且无法重定向回我的应用程序?
要指定我想通过步骤实现的目标:

  • AndroidManifest.xml 中提供了一个 IntentFilter处理应用链接,例如:

  • <intent-filter android:autoVerify="true">
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="http" android:host="my-app.com/callback" />
    <data android:scheme="https" />
    </intent-filter>
  • 有效的 assetlinks.json提供于 https://my-app.com/.well-known/assetlinks.json (此时,IntentFilterIntent 日志显示 JSON 验证成功,我可以使用类似 npx uri-scheme open https://my-app.com/callback 的命令从终端打开应用程序)
  • 我的应用程序通过启动 CustomTabsIntent.launchUrl 启动 OAuth2 流程网址如下:
  • https://accounts.google.com/o/oauth2/v2/auth?
    scope=email%20profile&
    response_type=code&
    state=state&
    redirect_uri=https://my-app.com/callback&
    client_id=client_id
    在这些步骤之后,我希望我的应用程序在成功登录后打开,因为它是 url 的有效处理程序并且不希望卡在浏览器中。这是可能的吗,或者请求永远不会从浏览器转发到操作系统,因为浏览器是 https:// 的有效处理程序方案?
    如果以上是不可能的,有没有办法从 WebView 导航回 App,提供 auth_code或者这样做的唯一方法是使用自定义方案?

    最佳答案

    原来<data android:scheme="http" android:host="my-app.com/callback" />是错误的,而不是这个,<data android:scheme="http" android:host="my-app.com" android:path="/callback" />应该使用。 android:host绝不应包含 path .我确认它在没有任何额外用户手势的情况下运行良好,就像它是一个普通的深层链接一样。浏览器实际上识别出这个 url 是一个声明的 url 并将响应转发给应用程序。

    关于android - 使用 Android 应用链接作为 OAuth2 重定向 URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67287268/

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