Xamarin.Auth不适用于Linkedin V2 API

时间:2019-02-20 12:13:17

标签: xamarin oauth oauth-2.0 linkedin xamarin.auth

我实际上是在尝试使用Linkedin和带有Xamarin.Auth扩展名的新API V2进行简单登录。我确实得到了这样的令牌

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,“ message”:“ PARAMETER中存在不允许的字段:处理字段[/ access_token,/ format]时出现数据处理异常”,“状态“: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);

如果我取出字段,则由于空的访问令牌而失败:{“ serviceErrorCode”:65604,“ message”:“ Empty oauth2 access token”,“ status”:401}这些错误的代码:

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。

1 个答案:

答案 0 :(得分:2)

嗨,终于找到了解决方法。

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

yourOauth2Request.AccessTokenParameterName = "oauth2_access_token";

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