gpt4 book ai didi

android - OAuth2 回调在某些设备的浏览器内启动 Activity

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:14:04 25 4
gpt4 key购买 nike

我已经在 Android 应用程序中为 Coinbase 实现了 OAuth2。应用流程如下。用户点击“与 Coinbase 的链接”按钮,调用 OAuth2 端点https://www.coinbase.com/oauth/authorize。然后系统浏览器打开 Coinbase OAuth 页面,要求用户登录并授权应用程序。完成此操作后,应用程序将通过自定义 URI 方案回调:

<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="myapp" android:pathPrefix="/coinbase-oauth" />
</intent-filter>

在具有此过滤器的 Activity 中,与用户启动初始 OAuth 流程的 Activity 相同onNewIntent(Intent intent) 方法被调用以获取代码通过 Intent 并通过获取 token 完成授权。这是首选方式,也是我们希望 OAuth 的行为方式,一切都很好。

但是,在某些设备上,BROWSABLE Activity 会在浏览器中重新创建。我们到达 Activity 的 onCreate() 并且还可以从 Intent 中获取 OAuth 代码,但是,我无法返回应用程序。启动浏览器进行授权的初始 Activity 仍在后台等待响应。新创建的 Activity 版本基本上是解耦的。虽然它可以完成工作,但我希望用户重新使用该应用程序。

最佳答案

问题不过是您需要回调到启动身份验证过程的同一 Activity 。我认为 Coinbase API 不打算以这种方式使用。

要解决此问题,只需将以下属性添加到 Activity 标记,为 Activity 指定启动模式 singleInstance

android:launchMode= "singleInstance"

参见 docs了解更多详情。

关于android - OAuth2 回调在某些设备的浏览器内启动 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50544582/

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