Xamarin.Auth不';不能使用Linkedin V2 API

Xamarin.Auth不';不能使用Linkedin V2 API,xamarin,oauth,oauth-2.0,linkedin,xamarin.auth,Xamarin,Oauth,Oauth 2.0,Linkedin,Xamarin.auth,实际上,我正在尝试使用Linkedin和新的API V2(扩展名为Xamarin.Auth)进行简单的登录。我确实得到了这样的代币 var auth = new OAuth2Authenticator( clientId: *****, clientSecret: *****, scope: "r_liteprofile", authorizeUrl: new Uri("https://www.linkedin.com/oauth/v2/authorization

实际上,我正在尝试使用Linkedin和新的API V2(扩展名为Xamarin.Auth)进行简单的登录。我确实得到了这样的代币

var auth = new OAuth2Authenticator(
    clientId: *****,
    clientSecret: *****,
    scope: "r_liteprofile",
    authorizeUrl: new Uri("https://www.linkedin.com/oauth/v2/authorization"),
    redirectUrl: new Uri(*****),
    accessTokenUrl: new Uri("https://www.linkedin.com/oauth/v2/accessToken")
    );
但是,当我尝试发出请求时,它失败了,出现了一个{“serviceErrorCode”:100,“消息”:“参数中存在未允许的字段:数据处理异常,同时处理字段[/access\u token,/format],“status”:403}。这些错误的代码:

var request = new OAuth2Request(
    "GET",
    new System.Uri("https://api.linkedin.com/v2/me?"
    + "format=json"
    + "&oauth2_access_token="
    + e.Account.Properties["access_token"]),
    null,
     e.Account
    );

var linkedinResponse = await request.GetResponseAsync();
var json = linkedinResponse.GetResponseText();
Console.WriteLine(json);
var request = new OAuth2Request(
                    "GET",
                    new System.Uri("https://api.linkedin.com/v2/me"),
                    null,
                    e.Account
                    );

var linkedinResponse = await request.GetResponseAsync();
var json = linkedinResponse.GetResponseText();

Console.WriteLine(json);
如果我取出字段,它将失败,因为访问令牌为空:{“serviceErrorCode”:65604,“message”:“empty oauth2 access token”,“status”:401}这些错误的代码:

var request = new OAuth2Request(
    "GET",
    new System.Uri("https://api.linkedin.com/v2/me?"
    + "format=json"
    + "&oauth2_access_token="
    + e.Account.Properties["access_token"]),
    null,
     e.Account
    );

var linkedinResponse = await request.GetResponseAsync();
var json = linkedinResponse.GetResponseText();
Console.WriteLine(json);
var request = new OAuth2Request(
                    "GET",
                    new System.Uri("https://api.linkedin.com/v2/me"),
                    null,
                    e.Account
                    );

var linkedinResponse = await request.GetResponseAsync();
var json = linkedinResponse.GetResponseText();

Console.WriteLine(json);
我已经确认我收到了代币。在寻找解决方案时,我发现令牌必须位于头中,但我无法更改或添加任何头。有人能帮我吗

多谢各位


PD:忘了说这段代码是针对Android的,但我也需要为iOS做这段代码。

嗨,我终于找到了解决方案

在Linkedin API V2中,您必须更改AccessTokenparameterName

yourOauth2Request.AccessTokenParameterName = "oauth2_access_token";

希望我能帮助别人不要像我一样生气。

格式和oauth2\u访问\u令牌是不必要的查询参数。必须在请求中的授权标头内传递访问令牌。根据您的
状态:401 Empty oauth2 access token
,身份验证标头缺失或为空。请确保身份验证标头遵循Authorization:Bearer(您的访问令牌)格式。与此链接类似。是的,问题是xamarin.auth扩展不允许您更改标头,或者至少我还没有找到如何更改标头的方法。没有xamarin应用程序(android/iOS)中的扩展,有没有办法让它工作?