Dies ist der Fluss Sie tun müssen, um einen Benutzer mit linkedin zu authentifizieren:
Angular Teil:
1.redirect dem Benutzer mit der Abfrage params angefordert, zum Beispiel:
var req = {
response_type: "code",
client_id: "Your Client ID",
redirect_uri: location.origin + location.pathname,
state: "DCESFWf45A53sdfKef434"
};
window.location.href = linkedinAuthorizationUrl + ObjecttoParams(req);
2.Nachdem der Benutzer authentifiziert ist, führt linkedin den Benutzer zurück zu Ihrem redirect_url mit dem zusätzlichen Abfrageparameter code, Ihr eckiger Controller sollte ihn sammeln und an Ihre Webapi-Methode senden für den nächsten Schritt.
WebAPI Teil:
3.Sobald geschrieben Sie den linkedin-Code in Ihre WebAPI müssen Sie mit linkedin api (HTTP POST), zum Beispiel Token Austausch:
using (WebClient wc = new WebClient()){
string RedirectUrl = providerLogin.RedirectUrl;
//Exchange tokens with linkedin
byte[] resultAsBytes =
wc.UploadValues("https://www.linkedin.com/oauth/v2/accessToken", new
NameValueCollection()
{
{ "grant_type", "authorization_code" },
{ "code", "THE CODE YOU RECEIVED FROM THE CLIENT" },
{"redirect_uri",RedirectUrl },
{"client_id", "YOUR LINKEDIN KEY"},
{"client_secret", "YOUR LINKEDIN PASSWORD"}
});
string resultAsString =
System.Text.Encoding.UTF8.GetString(resultAsBytes);
var resultAsJson = JObject.Parse(resultAsString);
string accessToken =
resultAsJson["access_token"].ToString();
}
4.Last Teil - wenn Sie haben das Zugriffstoken Sie benötigen GET-Anforderung an linkedin API durchzuführen, um die Details des Benutzers zu erhalten:
using (WebClient wc = new WebClient()){
wc.Headers.Add("Authorization", "Bearer " + accessToken);
var json = wc.DownloadString("https://api.linkedin.com/v1/people/~:
(email-address,id,first-name,last-name,picture-url,public-profile-url)?
format=json");
resultAsJson = JObject.Parse(json);
}
Und das ist es! Ich hoffe alles ist klar und du verstehst meinen Code. Viel Glück!