从 Xamarin 表单 android 读取浏览器 URL,以获取从重定向 URL 中的 IDP 发送的自定义 OAuth 代码

问题描述

我正在尝试在我的 Xamarin 应用程序中实现自定义 OAuth 登录

单击登录按钮时,我正在从浏览器点击 OAuth API。

它正在重定向到我的自定义 OAuth 身份验证页面,并在初始身份验证后从我的域页面的 auth.html 的 URL 中发送一个身份验证代码。我需要阅读该网址并进一步处理。

我在按钮中的代码点击:

var apiEndpoint = "https://auth.example.com/oauth2/authorize?response_type=code&client_id=myclientid&redirect_uri=https://example.com/apps/auth.html&state=STATE";
await browser.OpenAsync("apiEndpoint",browserLaunchMode.SystemPreferred);

当从我的域重定向 uri 返回时,我需要从 URL 中读取代码,如下所示:

https://orion.lexmark.com/winapps/auth.html?code=12358123-2200-4ga6-a806-8f60f5636ac8&state=STATE

我对 xamarin 世界很陌生,对此的任何帮助都会得到帮助。

解决方法

进行移动 OAuth 的最常见方法是使用私有 URI Schene URL,例如,当它返回到浏览器时,它将使用登录响应调用应用程序:

  • com.mycompany.我的应用程序:/回调

通过系统浏览器的集成形式(Android 上的 Chrome 自定义标签)打开 URL 也是标准做法。

开发人员通常还会插入开源 AppAuth libraries 来完成正确使用 OAuth 消息的棘手工作。不过,由于额外的层,这在 Xamarin 中会更难。

我建议您查看 AppAuth 并至少从中借鉴一些想法。我的 Android AppAuth Blog Post 说明了一个快速的工作设置。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...