TL;DR:
当IntentFilter授权完成并且重定向URL的导航发生时,LinkedIn不会截取LinkedIn。
看起来,只有当打开一个新的选项卡时,IntentFilter才能拦截这样的URL,而不是在导航时。
而且,由于LinkedIn只接受带有HTTP/HTTPS的重定向URL,所以我有点被锁定在这个问题上。我现在唯一的解决方案是使用WebView。
我试图添加一个“登录与LinkedIn”按钮到我的Xamarin.Forms应用程序。我使用的是Xamarin.Auth和Custom Tabs方法。
这意味着,为了获得登录+授权的结果,我需要使用IntentFilter。使用Google的auth正在工作,因为我复制了从这里开始,但是使用LinkedIn的auth并没有被IntentFilter截获。
我不知道怎么回事。也许重定向网址不正确,或者我的IntentFilter有一些问题。
我试过使用不同的URL,甚至localhost:PORT也没有成功。
IntentFilter:
[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配置:

发布于 2020-01-21 23:50:38
我不认为你的授权URL是正确的。它应该是“/oauth/v2/授权”,您正在使用"/Act/Callback“
我不熟悉“自定义Tabs”方法,但我可以设想使用OAuth进行身份验证所需的相同基本步骤。
您的重定向URL应该是用户在其站点上进行身份验证后LinkedIn调用的位置。这可能类似于"http://www.yoursite.com/oauth/v2/linkedin“。您的应用程序需要配置为侦听传入的http或https连接的地址。这通常是一个web服务器,但在C#,HttpListener也能工作。Xamarin.Auth可能已经为您内置了此功能,但我不熟悉OAuth的确切实现。(你说它对谷歌有效,所以我想它在某种程度上是可行的)
如果您的应用程序在多个设备上独立运行,可能不可能将所有设备地址添加到允许重定向的列表中。如果是这种情况,则必须设置类似于以下内容的应用程序:
App通知yoursite.com它正在等待认证。App将用户引导到LinkedIn进行身份验证。LinkedIn调用yoursite.com (这是允许的重定向)并发送身份验证结果。yoursite.com将身份验证结果转发给正在等待身份验证结果的应用程序。
无论如何,对于OAuth流来说,似乎还有比您想象的更多的东西。请参见:
和
有关如何使用LinkedIn连接到OAuth的特定信息。
https://stackoverflow.com/questions/59850357
复制相似问题