1
votes

I'm using the LinkedIn Android SDK downloaded from here (version 1.1.4) and have set up authentication already like this:

liSessionManager.init(activity,
                Scope.build(Scope.R_BASICPROFILE, Scope.R_EMAILADDRESS), authListener);

and everything works fine, but when I want to get the profile data, returned json is missing fields like summary in job positions and general summary for the given profile.

The request is made like this:

apiHelper.getRequest(activity, GET_LINKED_IN_PROFILE_URL, apiListener);

where GET_LINKED_IN_PROFILE_URL is https://api.linkedin.com/v1/people/~:(id,first-name,last-name,email-address,formatted-name,headline,location,industry,current-share,num-connections,num-connections-capped,summary,specialties,positions,phone-numbers,public-profile-url,picture-url,picture-urls::(original))?format=json.

The response is as follows:

{
  "currentShare": {
    "author": {
      "firstName": "Name",
      "id": "***",
      "lastName": "Surname"
    },
    "comment": "I've made my LinkedIn profile visual! Check it out and get yours!",
    "content": {
      "description": "some descr",
      "eyebrowUrl": "http://url.com/me/7827748?m_in&user_id=***",
      "resolvedUrl": "http://url.com/me/7827748?m_in&user_id=***",
      "shortenedUrl": "http://linkedin.in/url",
      "submittedImageUrl": "https://www.url.com/logo-share.png",
      "submittedUrl": "https://www.url.com/me/***?m_in&user_id=***",
      "thumbnailUrl": "https://media.licdn.com/media-proxy/ext?w=80&h=100&f=&hash=usON2E%2F4FqEGtIT5dsadsaaD&ora=1%2CaFBCTXdkRmpGL2lvQUFBPQ%2CxAVta5g-0R65wFUbzx0776dsaulz-50hKCpDZEXX8HmW3uZHfgasdapuGJ-n08ARIZ3Bex1svPLf5AmX_Us3r",
      "title": "title"
    },
    "id": "s1291360434",
    "source": {
      "application": {"name": "app"},
      "serviceProvider": {"name": "LINKEDIN"}
    },
    "timestamp": 1346884888000,
    "visibility": {"code": "anyone"}
  },
  "emailAddress": "***@gmail.com",
  "firstName": "Name",
  "formattedName": "Name Surname",
  "headline": "Job position",
  "id": "***",
  "industry": "Computer Software",
  "lastName": "Surname",
  "location": {
    "country": {"code": "pl"},
    "name": "Wroclaw, Lower Silesian District, Poland"
  },
  "numConnections": 229,
  "numConnectionsCapped": false,
  "pictureUrl": "https://media.licdn.com/mpr/mprx/photourl",
  "pictureUrls": {
    "_total": 1,
    "values": ["https://media.licdn.com/mpr/mprx/photourl"]
  },
  "positions": {
    "_total": 1,
    "values": [{
      "company": {
        "id": 2795963,
        "industry": "Information Technology & Services",
        "name": "Company 1",
        "size": "11-50",
        "type": "Privately Held"
      },
      "id": ***,
      "isCurrent": true,
      "location": {
        "country": {
          "code": "pl",
          "name": "Poland"
        },
        "name": "Wroclaw, Lower Silesian District, Poland"
      },
      "startDate": {
        "month": 1,
        "year": 2016
      },
      "title": "Job position"
    }]
  },
  "publicProfileUrl": "https://www.linkedin.com/in/username/41219"
}

When I use the same url in the API Console at https://apigee.com/console/linkedin, the response looks like this:

{
  "currentShare": {
    "author": {
      "firstName": "Name",
      "id": "***",
      "lastName": "Surname"
    },
    "comment": "I've made my LinkedIn profile visual! Check it out and get yours!",
    "content": {
      "description": "some descr",
      "eyebrowUrl": "http://url.com/me/7827748?m_in&user_id=***",
      "resolvedUrl": "http://url.com/me/7827748?m_in&user_id=***",
      "shortenedUrl": "http://linkedin.com/shortened",
      "submittedImageUrl": "https://www.url.com/logo-share.png",
      "submittedUrl": "https://www.url.com/me/***?m_in&user_id=***",
      "thumbnailUrl": "https://media.licdn.com/media-proxy/ext?w=80&h=100&f=&hash=usON2E%2F4FqEGtIT5dsadsaaD&ora=1%2CaFBCTXdkRmpGL2lvQUFBPQ%2CxAVta5g-0R65wFUbzx0776dsaulz-50hKCpDZEXX8HmW3uZHfgasdapuGJ-n08ARIZ3Bex1svPLf5AmX_Us3r",
      "title": "title"
    },
    "id": "s1291360434",
    "source": {
      "application": {
        "name": "app"
      },
      "serviceProvider": {
        "name": "LINKEDIN"
      }
    },
    "timestamp": 1346884888000,
    "visibility": {
      "code": "anyone"
    }
  },
  "emailAddress": "***@gmail.com",
  "firstName": "Name",
  "formattedName": "Name Surname",
  "headline": "Job position",
  "id": "***",
  "industry": "Computer Software",
  "lastName": "Surname",
  "location": {
    "country": {
      "code": "pl"
    },
    "name": "Wroclaw, Lower Silesian District, Poland"
  },
  "numConnections": 229,
  "numConnectionsCapped": false,
  "pictureUrl": "https://media.licdn.com/mpr/mprx/photourl",
  "pictureUrls": {
    "_total": 1,
    "values": [
      "https://media.licdn.com/mpr/mprx/photourl"
    ]
  },
  "positions": {
    "_total": 1,
    "values": [
      {
        "company": {
          "id": 2795963,
          "industry": "Information Technology & Services",
          "name": "Company 1",
          "size": "11-50",
          "type": "Privately Held"
        },
        "id": 22222,
        "isCurrent": true,
        "location": {
          "country": {
            "code": "pl",
            "name": "Poland"
          },
          "name": "Wroclaw, Lower Silesian District, Poland"
        },
        "startDate": {
          "month": 1,
          "year": 2016
        },
        "title": "Job position"
      },
      {
        "company": {
          "id": 611639,
          "industry": "Internet",
          "name": "Company 2",
          "size": "51-200",
          "type": "Privately Held"
        },
        "endDate": {
          "month": 2,
          "year": 2016
        },
        "id": 1111,
        "isCurrent": false,
        "location": {
          "country": {
            "code": "pl",
            "name": "Poland"
          },
          "name": "Wroclaw, Lower Silesian District, Poland"
        },
        "startDate": {
          "month": 4,
          "year": 2015
        },
        "summary": "Summary of job",
        "title": "Senior Android Developer"
      },
      {
        "company": {
          "id": 1111,
          "industry": "Internet",
          "name": "Company 2",
          "size": "51-200",
          "type": "Privately Held"
        },
        "endDate": {
          "month": 3,
          "year": 2015
        },
        "id": 111111,
        "isCurrent": false,
        "location": {
          "country": {
            "code": "pl",
            "name": "Poland"
          },
          "name": "Wroclaw, Lower Silesian District, Poland"
        },
        "startDate": {
          "month": 4,
          "year": 2014
        },
        "summary": "short summary",
        "title": "Android/iOS Developer"
      },
      {
        "company": {
          "id": 11111,
          "industry": "Internet",
          "name": "Company 2",
          "size": "51-200",
          "type": "Privately Held"
        },
        "endDate": {
          "month": 3,
          "year": 2014
        },
        "id": 1111111,
        "isCurrent": false,
        "location": {
          "country": {
            "code": "pl",
            "name": "Poland"
          },
          "name": "Wroclaw, Lower Silesian District, Poland"
        },
        "startDate": {
          "month": 2,
          "year": 2013
        },
        "summary": "android applications developer.\ncross-platform mobile application testing (iOS, Windows 8)",
        "title": "Junior Android Developer"
      },
      {
        "company": {
          "id": 3333,
          "industry": "Information Technology & Services",
          "name": "Company 3",
          "size": "201-500",
          "type": "Privately Held"
        },
        "endDate": {
          "month": 11,
          "year": 2011
        },
        "id": 3333333,
        "isCurrent": false,
        "location": {
          "country": {
            "code": "pl",
            "name": "Poland"
          },
          "name": "Warsaw, Masovian District, Poland"
        },
        "startDate": {
          "month": 7,
          "year": 2011
        },
        "summary": "Intern ",
        "title": "Internship"
      }
    ]
  },
  "publicProfileUrl": "https://www.linkedin.com/in/username/41219"
}

Which shows that the Android SDK's response is missing some job positions and a summary for a profile.

1

1 Answers

0
votes

It turned out LinkedIn is not returning fields that have no value. If you don't setup a summary in your profile, then there won't be a field named summary in the response. (Don't expect anything like "summary" : null)

Additionally only first position is returned for a given profile while using r_basicprofile scope. It's confusing since this one profile is returned in the positions array.

based on https://developer.linkedin.com/docs/fields/basic-profile :

Positions - An object representing the member's current position. See Position Fields for a description of the fields available within this object.

The reason why the API Console's response was having all job positions is because it asked for r_fullprofile scope while authenticating