LinkedIn Platformhttp://developer.linkedin.com
Sources: http://www.bls.gov/tus/charts/, http://www.conference-board.org/press/pressdetail.cfm?pressid=38208.86145
Our Mission: Connect the world’s professionals to make them more productive and successful
85 Million MembersMatthew ReyeE-Business Manager, HPAnne Marie PerignonCFO, Wells FargoSoumitraRajanPre-Sales EngineerAppleRob LeDir, Marketing Operations Aon InsuranceVinita BhagdaSr. Product ManagerCoca-ColaNick RiccardInteractive Art DirectorVMwareMei Wu LeeMarketing ManagerVerizonVeronica CapaProject CoordinatorGooglePatrick WyserSales Director NokiaGeorge KingstenEnterprise Sales AssociateAccenture*Names used for examples only.
Help You TellYour ProfessionalStory
MBAMaster’s DegreeBachelor’s DegreeWhat I do nowWhat I used to do10 Years Ago…
Who Do I RecommendTodayLanguagesPhotoColleaguesMentorInternational ExperienceProfessional ArticlesRecommendationsEventsStartup AdvisorSearch ExpertReading ListEntrepreneur ReferralsInventorPublicationsGroups
?????Tomorrow?
Your Feed
Marko Kaiser @marcoSeesmic http://www.seesmic.com
Your Story TravelsWith You
2. 	Achieve YourCareer Aspirations
Imagine your future
Use theProfessional Graph
Leverage the Inside Connection
Transform the Way You WorkLand your dream job
Find the best candidates
Finance your company
Collaborate with others
Tap the information & knowledge you need to be successfulLinkedIn Developer Networkdeveloper.linkedin.com
LinkedIn Labs linkedinlabs.comCollection of LinkedIn Hackday WinnersCool ideas and inspirationWorking examples of the JavaScript APIs
JavaScript APIsEasyNo “oAuth”, no “tokens”, no “signing”SimpleFamiliar HTML and JS SyntaxPowerfulAll REST APIs still availableFunWatch the code
Sign in with LinkedIn<!DOCTYPE><html><head>  <title>LinkedIn JavaScript API</title>  <script type="text/javascript" src="http://platform.linkedin.com/in.js">api_key: 7TUS2_LeCD_vLuUE0L9ew35dh-tYtWkZDk4lQm6LYbcdVXgRELNWUMxl    authorize: false  </script></head><body>  <script type="IN/Login">    Logged in as <?js= firstName ?> <?js= lastName ?>  </script></body></html>
Sign in with LinkedIn<!DOCTYPE><html><head>  <title>LinkedIn JavaScript API</title>  <script type="text/javascript" src="http://platform.linkedin.com/in.js">api_key: 7TUS2_LeCD_vLuUE0L9ew35dh-tYtWkZDk4lQm6LYbcdVXgRELNWUMxl  authorize: false  </script></head><body>  <script type="IN/Login">    Logged in as <?js= firstName ?> <?js= lastName ?>  </script></body></html>
Sign in with LinkedInapi_key: The API Key received during signup on developer.linkedin.comauthorize: Either "true" or "false". If "false", the user will not be automatically logged in for API calls.
Sign in with LinkedIn<!DOCTYPE><html><head>  <title>LinkedIn JavaScript API</title>  <script type="text/javascript" src="http://platform.linkedin.com/in.js">api_key: 7TUS2_LeCD_vLuUE0L9ew35dh-tYtWkZDk4lQm6LYbcdVXgRELNWUMxl    authorize: false  </script></head><body><script type="IN/Login">    Logged in as <?js= firstName ?> <?js= lastName ?>  </script></body></html>
Sign in with LinkedIn
Retrieve a Profile<script type="IN/Login" data-onAuth="getProfile">  Logged in as <?js= firstName ?> <?js= lastName ?></script>
Retrieve a Profilefunction getProfile() {IN.API.Profile("url=http://www.linkedin.com/in/adamnash")  .fields("firstName", "lastName", "industry", "distance", "summary")  .result(function(res) {var user = res.values[0],tmpl = ["<p>{firstName} {lastName} works in ",                "the {industry} industry. You are {distance} degree(s) ",                "away in the network. What follows is their summary.",                "</p><p>{summary}</p>"].join("");    for (var name in user) {tmpl = tmpl.replace(newRegExp("{"+name+"}", "g"), user[name]);    }document.getElementById("profile").innerHTML = tmpl;  });}
Retrieve a Profilefunction getProfile() {IN.API.Profile("url=http://www.linkedin.com/in/adamnash").fields("firstName", "lastName", "industry", "distance", "summary").result(function(res) {var user = res.values[0],tmpl = ["<p>{firstName} {lastName} works in ",                "the {industry} industry. You are {distance} degree(s) ",                "away in the network. What follows is their summary.",                "</p><p>{summary}</p>"].join("");    for (var name in user) {tmpl = tmpl.replace(newRegExp("{"+name+"}", "g"), user[name]);    }document.getElementById("profile").innerHTML = tmpl;  });}
IN.API.Profile(1).fields(2).result(3)The member IDs to get:url=http://www.linkedin.com/in/adamnashmx_82djaa (member token)The keyword "me" (current user)
IN.API.Profile(1).fields(2).result(3)The member IDs to getThe fields to return:camelCase nameshttp://developer.linkedin.com/docs/DOC-1061
IN.API.Profile(1).fields(2).result(3)The member IDs to getThe fields to returnA callback function for the resultThe function itself

LinkedIn Platform at LeWeb 2010

  • 1.
  • 2.
  • 3.
    Our Mission: Connectthe world’s professionals to make them more productive and successful
  • 4.
    85 Million MembersMatthewReyeE-Business Manager, HPAnne Marie PerignonCFO, Wells FargoSoumitraRajanPre-Sales EngineerAppleRob LeDir, Marketing Operations Aon InsuranceVinita BhagdaSr. Product ManagerCoca-ColaNick RiccardInteractive Art DirectorVMwareMei Wu LeeMarketing ManagerVerizonVeronica CapaProject CoordinatorGooglePatrick WyserSales Director NokiaGeorge KingstenEnterprise Sales AssociateAccenture*Names used for examples only.
  • 5.
    Help You TellYourProfessionalStory
  • 7.
    MBAMaster’s DegreeBachelor’s DegreeWhatI do nowWhat I used to do10 Years Ago…
  • 8.
    Who Do IRecommendTodayLanguagesPhotoColleaguesMentorInternational ExperienceProfessional ArticlesRecommendationsEventsStartup AdvisorSearch ExpertReading ListEntrepreneur ReferralsInventorPublicationsGroups
  • 9.
  • 10.
  • 11.
    Marko Kaiser @marcoSeesmichttp://www.seesmic.com
  • 12.
  • 13.
  • 14.
  • 15.
  • 17.
  • 18.
    Transform the WayYou WorkLand your dream job
  • 19.
    Find the bestcandidates
  • 20.
  • 21.
  • 22.
    Tap the information& knowledge you need to be successfulLinkedIn Developer Networkdeveloper.linkedin.com
  • 23.
    LinkedIn Labs linkedinlabs.comCollectionof LinkedIn Hackday WinnersCool ideas and inspirationWorking examples of the JavaScript APIs
  • 24.
    JavaScript APIsEasyNo “oAuth”,no “tokens”, no “signing”SimpleFamiliar HTML and JS SyntaxPowerfulAll REST APIs still availableFunWatch the code
  • 25.
    Sign in withLinkedIn<!DOCTYPE><html><head> <title>LinkedIn JavaScript API</title> <script type="text/javascript" src="http://platform.linkedin.com/in.js">api_key: 7TUS2_LeCD_vLuUE0L9ew35dh-tYtWkZDk4lQm6LYbcdVXgRELNWUMxl authorize: false </script></head><body> <script type="IN/Login"> Logged in as <?js= firstName ?> <?js= lastName ?> </script></body></html>
  • 26.
    Sign in withLinkedIn<!DOCTYPE><html><head> <title>LinkedIn JavaScript API</title> <script type="text/javascript" src="http://platform.linkedin.com/in.js">api_key: 7TUS2_LeCD_vLuUE0L9ew35dh-tYtWkZDk4lQm6LYbcdVXgRELNWUMxl authorize: false </script></head><body> <script type="IN/Login"> Logged in as <?js= firstName ?> <?js= lastName ?> </script></body></html>
  • 27.
    Sign in withLinkedInapi_key: The API Key received during signup on developer.linkedin.comauthorize: Either "true" or "false". If "false", the user will not be automatically logged in for API calls.
  • 28.
    Sign in withLinkedIn<!DOCTYPE><html><head> <title>LinkedIn JavaScript API</title> <script type="text/javascript" src="http://platform.linkedin.com/in.js">api_key: 7TUS2_LeCD_vLuUE0L9ew35dh-tYtWkZDk4lQm6LYbcdVXgRELNWUMxl authorize: false </script></head><body><script type="IN/Login"> Logged in as <?js= firstName ?> <?js= lastName ?> </script></body></html>
  • 29.
    Sign in withLinkedIn
  • 30.
    Retrieve a Profile<scripttype="IN/Login" data-onAuth="getProfile"> Logged in as <?js= firstName ?> <?js= lastName ?></script>
  • 31.
    Retrieve a ProfilefunctiongetProfile() {IN.API.Profile("url=http://www.linkedin.com/in/adamnash") .fields("firstName", "lastName", "industry", "distance", "summary") .result(function(res) {var user = res.values[0],tmpl = ["<p>{firstName} {lastName} works in ", "the {industry} industry. You are {distance} degree(s) ", "away in the network. What follows is their summary.", "</p><p>{summary}</p>"].join(""); for (var name in user) {tmpl = tmpl.replace(newRegExp("{"+name+"}", "g"), user[name]); }document.getElementById("profile").innerHTML = tmpl; });}
  • 32.
    Retrieve a ProfilefunctiongetProfile() {IN.API.Profile("url=http://www.linkedin.com/in/adamnash").fields("firstName", "lastName", "industry", "distance", "summary").result(function(res) {var user = res.values[0],tmpl = ["<p>{firstName} {lastName} works in ", "the {industry} industry. You are {distance} degree(s) ", "away in the network. What follows is their summary.", "</p><p>{summary}</p>"].join(""); for (var name in user) {tmpl = tmpl.replace(newRegExp("{"+name+"}", "g"), user[name]); }document.getElementById("profile").innerHTML = tmpl; });}
  • 33.
    IN.API.Profile(1).fields(2).result(3)The member IDsto get:url=http://www.linkedin.com/in/adamnashmx_82djaa (member token)The keyword "me" (current user)
  • 34.
    IN.API.Profile(1).fields(2).result(3)The member IDsto getThe fields to return:camelCase nameshttp://developer.linkedin.com/docs/DOC-1061
  • 35.
    IN.API.Profile(1).fields(2).result(3)The member IDsto getThe fields to returnA callback function for the resultThe function itself
  • 36.
    IN.API.Profile(1).fields(2).result(3)The member IDsto getThe fields to returnA callback function for the resultAdditional Chained Methods.error() is identical to result() for errors.params() passes key-value pairs to the API
  • 37.
    .result(myFunction(r) {...}, [scope])Thevariable "r" is a JavaScript ObjectContains "values" for collections of itemsSimilar to the XML REST API
  • 38.

Editor's Notes

  • #3 Americans spend 8.8 Hours a Dayat WorkIn 1987, 61% of them were satisfied with their jobsThen we had the Internet revolution. Social networks. Smart phones….In 2009, that number dropped to 45%
  • #4 * Fantasticopportunity to provide great economic value and personal happiness.* Looking for passionate developers to use our platform to share in this mission.
  • #5 200 CountriesAlmost 50% outside US80th Million member from Dijon, FranceWe will be truly successful when we solve two incredibly hard problems for you and everyone of our 85 million members
  • #6 Fundamentally do two things:First: Help people tell their professional story
  • #7 Other sites let you tell your personal storyFacebook: Social Utility: Friends, Family, Status and Photos
  • #8 But LinkedIn lets you tell your professional story.Resume: Not a very compelling story. Low fidelity.Like the telegraph. Dots and dashes.
  • #9 LinkedIn Profile. Story of today. Like the telephone. Audio.Our goal:How can we help make it easier for you to develop your story?Allow you to stand out, be found, and differentiate yourself from the crowdSo that people know they want you, not just someone with your skills.Developers can assistAll these fields available via APIFind a way to get more information, and better information.Profile MakeoverWhat and how: More compelling picture of not just what you’ve done, but how you did it..
  • #10 Story of tomorrow: Video.Share all your creations Pictures Videos Presentations SitesCode
  • #11 Profile data relatively static. Talks about yesterday. What you’ve done.Feed is highly dynamic. Talks about today. What’s going on now.Provides you’re keeping up with the current state of the artFor example, I’m looking to hire Developer Advocates for the teamIf I see someone linking to OAutharticle, definitely gets my interestEven better, providing a perceptiveDevelopers:Help people cultivate their feeds &amp; share articlesTrack your network. Profile updates, status and shares, jobsBe in the conversation
  • #12 Marko Kaiser from SeesmicAll social services in one placeTalk about his experiences using the LinkedIn APIs
  • #13 All this leads to a trusted professional identity. Profile of record.On *and* off LinkedIn.For example, Presdo. A networking tool used at LeWeb used LI APIs to import your information.If you weren’t on LI, you couldn’t use it, and didn’t have any meetings.Or E-mail clients, or blogs and other publishers, many more examples.
  • #14 The first goal is helping you tell your storyThe second is enabling you to achieve your career aspirationsBecause Story is yesterday and today. (Where I came from and arrived at.)Career: Where do you want to go tomorrow?
  • #15 Before you can get there, do you even know what you want to do?How do you find out options?How could you get there?Who can you talk with about accomplishing that task?Career Explorer mines LinkedIn data to help make this happen.
  • #16 LinkedIn is not a database of professionalsBut a graph with connections.If you’re not connecting, you’re denying yourself power and opportunities to grow and learn
  • #17 If a professional colleague asked you for advice, you’d be happy to provide it.And they may be happy to ask…If only they’d known you were the best person to talk to.Developers can mine relationships between people to facilitate those suggestions.Help people better use their connectionsFor example: Search for something on another site, suggest experts from your LinkedIn network when appropriate
  • #18 Jobs:Find them, research the role &amp; company, apply, get the interview“I didn’t know ___ worked there!”Both push and pullCan a freelancer/consultant get interesting clients to find him?
  • #19 Land your dream job, find the best candidates, finance your company, shifting from cold calling to warm prospecting, have the info and knowledge to be successful at what you doGoshido raised 162k Euro in 8 days using LI network.
  • #20 Launched at LeWeb last yearOpen program. Anyone can join.Read and Write REST style APIsProfiles, Connections, Feed, People-Search
  • #21 If you’re looking for inspiration, winners of hackday are on linkedinlabs.Of note, our most recent hackday winner created LinkedIn Instant. A google-instant like searching tool using our APIs.The total time for development was 5 hours, including all the custom markup and CSS added
  • #22 The platform launched in October. Labeled as Early Access.Feedback is really important to us at this stage, it helps us understand what developers want to do with JavaScript
  • #23 Here’s the basic markup for a “sign in with linkedin” buttonScript tag of type text/javascript for our source, with key/values inside
  • #24 Inside the script tag, key/value pairs are comma separated, and each item is on a newline
  • #25 The two main parameters are api_key and authorizeapi_key is the key we got from developer.linkedin.comauthorize: if true, we’ll automatically log the user in if they’ve given you access.if false, we’ll always display the “sign in with linkedin” button and ask them to approve your app again
  • #26 Script tag of IN/Login which is our login widget. The insides are displayable content (in this case, what will replace the button when the user logs in)
  • #27 all of this creates the button you see here. When the user clicks it, they’re asked to give your site permissionOnce you have permission, you can begin making API calls
  • #28 We’re going to start by modifying the IN/Login tag to add one of those onAuth parameters. We’ll call the function getProfile
  • #29 getProfile looks like this.
  • #30 Most interestingly, we’re making a call to IN.API.Profile() right away. This is the JavaScript API. Items are chained together to define the request, which is turned into a REST request on the backend
  • #31 The syntax looks like this. IN.API.Profile(), followed by fields() and result()Starting with the parameter for the Profile() method, you can pass in one or more of the following:public profile URLs can be passed in as url= your URL here
  • #32 The fields you want for the profile are denoted using fields()Names are camelCase, and a full list of profiles can be found here
  • #33 The call happens when you call the result() methodIt can be invoked one of two ways. The first way is with just a callback function, which will receive the resultThe second way includes a scope for the function in more complex Object Oriented environments
  • #34 Lastly, .error() is a method you can add on to capture any errorsAnd params() lets you pass key-value pairs along
  • #35 Inside of result, you get a json payload of the APIThe format is very similar to the standard XML. Collections are under a “values” key, attributes are prefixed by an underscore
  • #36 Thanks for listening.Fantastic opportunity to provide great economic value and personal happiness. Looking for passionate developers to use our platform to share in this mission. And even for developers to join our team.Open for questions.