我正在使用位于https://developer-programs.linkedin.com/documents/exchange-jsapi-tokens-rest-api-oauth-tokens的文章将我的Javascript访问令牌交换为REST OAuth令牌。
遵循这里的指示后,无论我做什么,我都只会收到400 Bad Request响应。
我用于Facebook并希望通过LinkedIn重新创建的流程是;前端向LinkedIn进行身份验证,并将访问令牌传递给我的API,然后API获取所有必要的用户信息,并将我自己的承载令牌传递回客户端,等等。
不幸的是,LinkedIn在此方面的表现并不理想,我需要将其令牌从其Javascript令牌转换为OAuth令牌。
我将LinkedIn传递给我的cookie传递给我的API,它看起来类似于以下内容(其中OAuthBase为http://oauth.googlecode.com/svn/code/csharp/OAuthBase.cs)
access_token: "oxmKI9aU4RCfksdegZ3obZGHK-vo6Q4-4FSQk"
member_id: "AmjWCF7ExN"
signature: "t8KEbLjJ+r6uM42tUwfJm5yWp70="
signature_method: "HMAC-SHA1"
signature_order: ["access_token","member_id"]
signature_version: "1"
然后,我尝试致电https://api.linkedin.com/uas/oauth/accessToken进行实际交换。我的代码是:
public async Task<IHttpActionResult> ConvertLinkedInToken(LinkedInCovertTokenObject val)
{
string normalizeduri;
string normalizedparams;
OAuthBase o = new OAuthBase();
string signature = o.GenerateSignature(new Uri("https://api.linkedin.com/uas/oauth/accessToken"), Startup.linkedInAuthOptions.ClientId, Startup.linkedInAuthOptions.ClientSecret, val.access_token, null, "POST", o.GenerateTimeStamp(), o.GenerateNonce(), out normalizeduri, out normalizedparams);
var client = new HttpClient();
var uri = new Uri("https://api.linkedin.com/uas/oauth/accessToken?" +
"oauth_consumer_key=" + Startup.linkedInAuthOptions.ClientId +
"&xoauth_oauth2_access_token=" + val.access_token +
"&signature_method=HMAC-SHA1" +
"&signature=" + signature
);
var response = await client.GetAsync(uri);
return Ok();
}
无论我怎么玩,从领英那里得到的一切都是400错误的请求,而没有任何其他有用的信息。
1)如何在我的C#API中将LinkedIn JS令牌转换为Rest OAuth令牌
您正在查看来自LinkedIn的旧文档。从5月12日开始,LinkedIn已开始在其API中推出包括身份验证在内的新更改。据我所知,LinkedIn不再使用OAuth,此后就需要OAuth2.0进行身份验证。您应该检查此链接以获取更多信息:https : //developer.linkedin.com/docs/signin-with-linkedin
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句