我正试图将API的银行Plaid OAuth部分实现到我的Xamarin应用程序中,并且遇到了很多麻烦。对于初学者来说,Plaid需要一个OAuth回调URLhttps://yoururlhere.com
,如果WebAuthenticator支持它,我就无法弄清楚。我只看到了packagename
的例子Plaid允许Android包名,但不允许iOS…我应该这样做吗?那么iOS会发生什么呢?我需要实现这两个Android和iOS。从我的理解,我没有离开我的Xamarin应用程序,因为这都是通过webview完成的,因此遵循这种方法并不是真的有意义?
为了更好地理解我要做什么,我简化了下面的代码和名称。
MainViewModel.cs
// successfully has linkToken before this point
var authResult = await WebAuthenticator.AuthenticateAsync(
new Uri("https://cdn.plaid.com/link/v2/stable/link.html?isWebview=true&token=" + linkToken),
new Uri("https://someurl.net/link/v2/oauth/redirect")
);
WebAuthenticationCallbackActivity.cs.
[Activity(NoHistory = true, LaunchMode = LaunchMode.SingleTop, Exported = true)]
[IntentFilter(new[] { Android.Content.Intent.ActionView },
Categories = new[] { Android.Content.Intent.CategoryDefault, Android.Content.Intent.CategoryBrowsable },
DataScheme = "https")]
public class WebAuthenticationCallbackActivity : Xamarin.Essentials.WebAuthenticatorCallbackActivity
{
public override void OnCreate(Bundle savedInstanceState, PersistableBundle persistentState)
{
base.OnCreate(savedInstanceState, persistentState);
}
}
这里的数据方案应该是什么?仅仅是https://
?还是我的完整URL?
AndroidManifest.xaml
我已经在这里添加了正确的必需品
我还没有机会看iOS必需品,但我们现在可以忽略它们。
我还需要拦截这个回调,并从重定向的URL发出新的http请求来完成令牌,我不确定如何做到这一点
任何帮助实现这一点的任何部分将非常感激
Microsoft文档提供了关于Xamarin的示例。要点:Web Authenticator
对于Android, Android需要一个Intent Filter设置来处理你的回调URI。这可以通过创建WebAuthenticatorCallbackActivity类的子类来实现。
const string CALLBACK_SCHEME = "myapp";
[Activity(NoHistory = true, LaunchMode = LaunchMode.SingleTop, Exported = true)]
[IntentFilter(new[] { Android.Content.Intent.ActionView },
Categories = new[] { Android.Content.Intent.CategoryDefault, Android.Content.Intent.CategoryBrowsable },
DataScheme = CALLBACK_SCHEME)]
public class WebAuthenticationCallbackActivity : Xamarin.Essentials.WebAuthenticatorCallbackActivity
{
}