问题描述
我正在尝试在我的 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 说明了一个快速的工作设置。