Rop*_*per 6 android oauth oauth-2.0 url-redirection
我在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>
Run Code Online (Sandbox Code Playgroud)
在使用此过滤器的活动内部,这是与用户启动初始OAuth过程相同的活动,该onNewIntent(Intent intent)方法称为通过意图获取代码,并通过获取令牌完成授权.这是首选的方式以及我们希望OAuth如何表现,一切都很好.
但是,在某些设备上,BROWSABLE活动会在浏览器中重新创建.我们到达onCreate()了活动,也可以从意图中获取OAuth代码,但是,我无法重新进入应用程序.启动浏览器进行授权的初始活动仍在后台等待响应.新创建的活动版本基本上是分离的.虽然它可以完成工作,但我希望用户重新进入应用程序.
问题是什么,但您需要回调到启动身份验证过程的同一活动。我认为 Coinbase API 无意以这种方式使用。
要解决此问题,只需singleInstance通过将以下属性添加到活动标记来指定活动的启动模式即可。
android:launchMode= "singleInstance"
Run Code Online (Sandbox Code Playgroud)
请参阅文档了解更多详细信息。
| 归档时间: |
|
| 查看次数: |
354 次 |
| 最近记录: |