-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Description
Linkedin changes to versioned api. See: https://learn.microsoft.com/en-us/linkedin/marketing/versioning?trk=eml-mktg-cust-202304-global-api-migrations-june&mcid=7054174543908663296&src=e-eml&view=li-lms-2023-04
This has some impact.
1.Change needed to OAuth20Service
final OAuth20Service service = new ServiceBuilder(clientId)
.apiSecret(clientSecret)
.defaultScope(new ScopeBuilder("r_liteprofile", "r_emailaddress"))
.callback("http://example.com/callback")
.build(LinkedInApi20.instance());
a. LinkedInApi20 need different endpoints: change v2 to rest
public String getAccessTokenEndpoint() {
return "https://www.linkedin.com/oauth/**rest**/accessToken";
}
protected String getAuthorizationBaseUrl() {
return "https://www.linkedin.com/oauth/**rest**/authorization";
}
This could be solved by using an extention of LinkedInApi20 with the rest endpoint. But it is better that LinkedInApi20 gets updated.
b. the oauth request need to get a version header. I think for this, scribejava lib needs a change
- Change to Resource api. This is easy and does not require a change of the scribeapi.
In the example https://github.com/scribejava/scribejava/blob/master/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/LinkedIn20Example.java change the resource endpoint:
now:
```
private static final String PROTECTED_RESOURCE_URL = "https://api.linkedin.com/v2/me";
private static final String PROTECTED_EMAIL_RESOURCE_URL
= "https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))";
chage to
private static final String PROTECTED_RESOURCE_URL = "https://api.linkedin.com/**rest**/me";
private static final String PROTECTED_EMAIL_RESOURCE_URL
= "https://api.linkedin.com/**rest**/emailAddress?q=members&projection=(elements*(handle~))";
..
final OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL);
**request.addHeader("LinkedIn-Version", "202304");**