LinkedIn Oauth profile data

Yes, I have tried to add it as an additional step in the sign in process, but as mentioned above, when they sign up and I “make changes to user” I can’t add their email address they’ve entered without creating a new “email” field for the user. How can I update the default email field in the sign up process when someone signs up with LinkedIn?

1 Like

@MrsHS You can create another custom field or alternatively, if the user logs in with email and then authenticates with LinkedIn while logged in, profiles will be merged. The user can then login with either LinkedIn or email going forward based on their preference and the email will be saved to email field in User thing.

2 Likes

Firstly, what do you mean by “create another custom field”? And secondly, with the alternative option… how do you get someone to authenticate with LinkedIn - is it by setting up the API Connector just the same as when setting up a signup with LinkedIn?

@MrsHS Custom field is what you said “creating a new “email” field for the user” just for the newsletter and authenticate with LinkedIn is the same signup/login with a social network action for which you can use the plugin.

Hi @neerja,

Thanks for the detailed instructions. It seems though that the section I have quoted above is incomplete? According to the documentation here, one must add a so called ‘decoration’ (displayImage~:playableStreams) to the call:
GET https://api.linkedin.com/v2/me?projection=(id,firstName,lastName,profilePicture(displayImage~:playableStreams))

Without it, the value returned is not an image nor is it an image URL. When I add the decoration, I get a lot more data back (explained here) about the asset but the only ids returned seem to be ‘URNs’.

Any advice please on converting a URN into an image URL? This stack overflow answer suggests we just need to pass on the access token after the projection but I’m unsure how to do that.

1 Like

@louisadekoya Good catch, updated that step with one approach. Let me know if that works for you

Never mind Neerja, I figured it out. For anyone else who needs this, you need to get the ‘identifier’ of the first element within the profile image elements, like so:

Unnamed%20image

Note, I named my profile API call “Get_LinkedIn_Profile” not “profile-idname” like Neerja’s.

By the way @Neerja, I think it would be good to update the plugin to return the email again, assuming it is possible. Or at least send a notice out. I assume that there are people whose apps are now broken because of the LinkedIn change and they may not even know it yet.

5 Likes

Thanks @Neerja, our posts must have crossed. Yes, all good now.

1 Like

I’ve received approval from LinkedIn to get users email addresses too, so now it makes sense for me to use the Connector as I won’t be able to get the email addresses via the plugin? Is that right?

2 Likes

I appear to have everything working except I don’t know how to display the user’s LinkedIn profile picture on my app (extracting data via API). I’ve tried displayimage, displayimage-elements (tried different extensions of the elements).

2 Likes

Hello Neerja,

I’ve done the same setup but still see

" Warning

You haven’t tested this API in run mode and authenticated with Linkedin yet. You need to do this first to setup calls and to test the URLs and keys.

To do this, setup a login workflow, run your app in run mode (with debug_mode=true in the URL) and authenticate with the service. Once done, your access token will be used to initate the API calls and the API will be marked as valid.

IMPORTANT: make sure not to have a change page action in the workflow you use to authenticate while testing"

How can I fix this ?

@stephane Add a signup/login with social network action to a page with LinkedIn API selected> preview in runmode > click on it to signup / login with LinkedIn > you will be redirected to your app with a success message

1 Like

Awesome thanks ! I had some existing actions page after the signup/login with social network so I had to remove them in order to work properly.
Small question, when I get datas from linkedin API (cf screenshot) How many api calls will be made : 1 or 4 ?

1 Like

so this method doesn’t work for global users. As firstname and lastname are mapped to localized en_US if a user with another language logs in we don’t get the firstname and last name.
Any ideas on how to resolve this?

2 Likes

typically bubble caches data calls with the same url parameters so i would guess 1 call, But you could set a state field on the page with one call and then just access that field setting the values.

So is it expected that the app will be allowed to get the wider scope at some point ?

Hello neerja,

It is now working as expected.
However sometimes I happen to have duplicate user created, how does the oauth knows it should update or create a new record in db ?
I can’t see a linkedin ID field or so

@stephane Oauth new entry is usually decided based on email. Duplicate user can be created if user logged in with LinkedIn that didn’t share email and then user separately logged into app with email. The fix is to login with email and while logged in, oauth with LinkedIn so profiles are merged.

1 Like

Is it still the case for v2 ? since the email requires to be pulled in a separate api call e.g : https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))

I remember having user with empty email

@stephane if you are using v2 and a new user is created each time a user oauths in, that is a bug. Duplicate users are possible without a bug if you have a user login with email, logout and then oauth with Linkedin v2 that doesn’t share email and requires getting this from a second call.