Blog

Latest technology news, trends and developers guide for business application. Visit this space for more tech updates.

Let’s work on your exciting new project together!

Step by Step Developers Guide to Integrate LinkedIn with an Android Application

Android App Development, Tech Blog, Tech Trends

LinkedIn- we know it as the world’s largest professional network that enables users to share an update about their professional activities. Be it changing a job or completion of a project, LinkedIn has remained a preferred social media platform for professionals.

The data on LinkedIn is largely based on corporate life and business communities have embraced this platform for getting the reference of individuals. Its growing popularity worldwide is one of the major reasons why mobile app developers tend to integrate it with Android applications.

Integration of LinkedIn with existing Android apps can offer a plethora of advantages. One of them is users can share various information about their career without exiting from the app. Let’s go through a step-by-step process of integrating LinkedIn with Android apps.

Overview of Android SDK

• The Android SDK reduces your app’s time to market (TTM) by providing out-of-box support for LinkedIn natively inside your Android applications.
• The Mobile SDK for Android requires the support of the official LinkedIn Android application for the smooth and bug-free app development process using the LinkedIn APK file
• The minimum supported version is Android 4.4.2 (API 19).

Necessary SDK Features

Single Sign-on (SSO) authentication, in conjunction with the LinkedIn mobile app.
A convenient wrapper for making authenticated calls to LinkedIn’s REST APIs.
“Deep-linking” to additional member data in the LinkedIn mobile app.
Sample application that demonstrates best-practice implementations of all of the SDK’s features.

Here are key steps to follow for integrating LinkedIn into an Android application.

Step 1- Establish Development Environment
Let’s start from scratch. You need to install IDE for integrating LinkedIn into the app. One of the most popular choices in the IDE for such integration is Eclipse along with different Android developer tools. Other IDE options are Google’s Android Studio and JetBrains IntelliJ IDEA.

After installing the IDE, you need to install Android SDK with in-built tools.

Step 2- Create Application
-To Integrate LinkedIn in your Android mobile application, you need to create a new application using LinkedIn Developer’s Account
https://www.linkedin.com/developer/apps

Step 3- Set the Application Permission
You have to set the Default Application Permissions and to do that you have to select check box “r_basicprofile” and “r_emailaddress” and click on the “update” button to set the permission.

Step 4- Download Mobile LinkedIn SDK
Go to https://developer.linkedin.com/docs/android-sdk and download an Android SDK

Step 5- Generate Hash Key
-Generate a hash key and integrate your app with the LinkedIn account
-Go to https://www.linkedin.com/developer/apps
-Select your application name and click the ‘Mobile’ tab
-Add the package name and generated a hash key in your LinkedIn Application.
-This hash key will authenticate your mobile application.
Here are Login and Logout processes.

Login

private static final String topCardUrl = “https://” + host + “/v1/people/~:(first-name,last-name,email-address,formatted-name,phone-numbers,public-profile-url,picture-url,picture-urls::(original))”;
private static Scope buildScope() {
return Scope.build(Scope.R_BASICPROFILE, Scope.R_EMAILADDRESS, Scope.W_SHARE);
}
public void loginLinkedin() {
LISessionManager.getInstance(getApplicationContext()).init(this,
buildScope(), new AuthListener() {
@Override
public void onAuthSuccess() {
APIHelper apiHelper = APIHelper.getInstance(getApplicationContext());
apiHelper.getRequest(MainActivity.this, topCardUrl, new ApiListener() {
@Override
public void onApiSuccess(ApiResponse s) {
}
@Override
public void onApiError(LIApiError error) {
}
});
}
@Override
public void onAuthError(LIAuthError error) {
}
}, true);

Logout

LISessionManager.getInstance(getApplicationContext()).clearSession();
Check Login
private boolean isLogin(){
LISessionManager sessionManager = LISessionManager.getInstance(getApplicationContext());
LISession session = sessionManager.getSession();
boolean accessTokenValid = session.isValid();
return accessTokenValid;
}
Share Message
private static final String shareUrl = “https://” + host + “/v1/people/~/shares”;
public void shareMessage() {
APIHelper apiHelper = APIHelper.getInstance(getApplicationContext());
apiHelper.postRequest(MainActivity.this, shareUrl, buildShareMessage(“Hello World”, “Hello Title”, “Hello Descriptions”, “http://ankitthakkar90.blogspot.in/”, “http://1.bp.blogspot.com/-qffW4zPyThI/VkCSLongZbI/AAAAAAAAC88/oGxWnHRwzBk/s320/10333099_1408666882743423_2079696723_n.png”), new ApiListener() {
@Override
public void onApiSuccess(ApiResponse apiResponse) {
}
@Override
public void onApiError(LIApiError error) {
}
});
}
public String buildShareMessage(String comment,String title,String descriptions,String linkUrl,String imageUrl ){
String shareJsonText = “{ \n” +
” \”comment\”:\”” + comment + “\”,” +
” \”visibility\”:{ ” +
” \”code\”:\”anyone\”” +
” },” +
” \”content\”:{ ” +
” \”title\”:\””+title+”\”,” +
” \”description\”:\””+descriptions+”\”,” +
” \”submitted-url\”:\””+linkUrl+”\”,” +
” \”submitted-image-url\”:\””+imageUrl+”\”” +
” }” +
“}”;
return shareJsonText;
}

Open Current User Profile

public void openUserProfile(){
DeepLinkHelper deepLinkHelper = DeepLinkHelper.getInstance();
deepLinkHelper.openCurrentProfile(MainActivity.this, new DeepLinkListener() {
@Override
public void onDeepLinkSuccess() {
}
@Override
public void onDeepLinkError(LIDeepLinkError error) {
}
});
}

Best Practices

Posting on member’s behalf: You need to assure the app users that you will not post or send mail on their behalf without their consent, and give them the option to edit content before posting or not sharing content.

Permission Request: You should inform users about all the permissions you are requesting and how you are going to use their data. LinkedIn does not support incremental permission requests, so all permissions must be granted during the authorization step.

Authentication:
• Remind the user that they are logged into your application by displaying their name, portrait, and/or account settings
• Avoid multiple log-in prompts
• Cache the user’s access token after they grant your application and do not bring the user through the authentication flow again unless they log out or the access token expires or is otherwise invalid
• You should allow the user to log out, and when they log out you should destroy the access token you had been granted
Canceling in-progress requests: During your application’s workflow, you may wish to cancel any in-progress API requests. This is done by calling APIHelper.cancelCalls() method.

Using ProGaurd with your application: If you wish to use ProGuard on the release build of your mobile application, you will need to add the following lines to your project’s proguard-project.txt file to preserve information required for the SDK to function properly:

Proguard configuration- Keep class com.linkedin.** { *; } , keep attributes Signature

Mobile access tokens

It is important to note that access tokens that are acquired via the Mobile SDK are only usable with the Mobile SDK, and cannot be used to make server-side REST API calls.

Partnership Program

All other APIs (e.g. Connections, Groups, People Search, Invitation, Job Search, etc.) will require developers to become a member of one of our partnership programs.

Partnering with LinkedIn provides you with additional API functionality & data access, increased call limits & dedicated support.
Applications are only accepted when we feel that they’re providing value to members, developers, and LinkedIn.

https://developer.linkedin.com/partner-programs

References:
https://developer.linkedin.com/docs/android-sdk
https://developer.linkedin.com/docs/android-sdk-auth
https://developer.linkedin.com/downloads#androidsdk
https://www.numetriclabz.com/android-linkedin-integration-login-tutorial/
https://developer.linkedin.com/docs/oauth2
https://developer.linkedin.com/partner-programs/apply
https://developer.linkedin.com/support/developer-program-transition
You can Download source code of this example from Github.

Estimating the Cost of New Mobile Application Development

Let us start with a plain fact: If you have a business, you need a...

New Features and Improvements- Android Studio 3.5

When you hire Android app developers for creating an innovative and feature-rich mobile app, they...

Getting the Best of Remote Developers for Mobile app Development

Outsourcing mobile app development servicing for your business is much more cost-effective than hiring someone...

Subscribe to our Newsletter Receive free e-guides, news, updates and more