【发布时间】:2020-05-08 01:27:09
【问题描述】:
TL;DR:
IntentFilter 在 LinkedIn 授权完成并且导航到重定向 URL 时不会拦截 URL。
看起来IntentFilter 不能像那样拦截 URL,只有在打开新标签时才可以,而不是在导航时。
而且由于LinkedIn 只接受带有HTTP/HTTPS 的重定向URL,我在这个问题上有点锁定。我现在唯一的解决方案是使用WebView。
我正在尝试将“使用 LinkedIn 登录”按钮添加到我的 Xamarin.Forms 应用程序。我正在使用Xamarin.Auth 和Custom Tabs 方法。
也就是说,为了得到登录+授权的结果,我需要使用一个IntentFilter。
使用 Google 的身份验证正在工作,因为我复制了它from here,但使用 LinkedIn 的身份验证没有被IntentFilter 拦截。
我不确定出了什么问题。可能重定向 URL 不正确,或者我的 IntentFilter 有问题。
我尝试使用不同的 URL,甚至 localhost:PORT 都没有成功。
意图过滤器:
[Activity(Label = "LinkedInInterceptorActivity", NoHistory = true, LaunchMode = LaunchMode.SingleTop)]
[IntentFilter(new[] { Intent.ActionView }, Categories = new[] { Intent.CategoryDefault, Intent.CategoryBrowsable },
DataSchemes = new[] { "http", "https" }, DataHost = "www.linkedin.com", DataPath = "/Act/Callback")]
public class LinkedInInterceptorActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
//Convert Android.Net.Url to Uri
var uri = new Uri(Intent.Data.ToString());
//Load redirectUrl page
Global.Authenticator.OnPageLoading(uri);
var intent = new Intent(this, typeof(MainActivity));
intent.SetFlags(ActivityFlags.ClearTop | ActivityFlags.SingleTop);
StartActivity(intent);
Finish();
}
}
LinkedIn 配置:
【问题讨论】:
-
您是否尝试过像链接中的示例一样将
DataPath设置为/oauth2redirect,并将DataSchemes设置为从Google 上项目的Android 客户端ID 获得的反向客户端标识符API 控制台 -
LinkedIn 重定向 URL 必须是有效的 HTTP/HTTPS。我无法向其中添加自定义方案。因此,我不能有不同的设置。
标签: c# xamarin xamarin.android intentfilter