所以,这个问题的整个前提可能是愚蠢的,因此没有实际意义,但是在这里:
我有一个自定义的IdP,可以用OauthC令牌交换oauth1令牌+秘密。它实际上是一个静默授权请求,用于将已登录的应用程序从旧系统切换到新系统。这都是功能。
但是,使用自定义标签执行请求意味着它会弹出浏览器。在未安装chrome的手机上执行此操作时,浏览器通常不会像chrome自定义标签一样在请求通过后自行关闭。我想通过不使用自定义标签来执行请求来完全避免这种情况。
因此,我使用okhttp来执行请求。 okhttp不处理重定向到uri的操作,因此在响应中,我:
if (response.isRedirect()){
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse(response.headers().get("location")));
startActivity(intent);
}
这可以达到net.openid.appauth.RedirectUriReceiverActivity
的目的,但是现在需要检查AuthorizationRequest request = PendingIntentStore.getInstance().getOriginalRequest(state);
,并且由于我的自定义performSilentAuthorizationRequest
中无法访问原始请求,因此我无法将原始请求设置为PendingIntentStore。
我是否应该克隆AppAuth-Android只是为了破解对PendingIntentStore的访问?我想我也可以扩展RedirectUriReceiverActivity
并将其更改为使用我可以访问的PendingIntentStore
的独立副本。但这实际上是同一回事,只是绕过RedirectUriReceiverActivity
的{{1}}支票。
开始所有这些操作是为了防止出现不必要的弹出UI的丑陋UI情况。因此,任何绕过该问题的建议都将受到欢迎。