Found the answer. MUST enable in OAuth User Agreement r_basicprofile if anyone needs full example to integrate android with linkedin and get Connections for example see the tutorial
android linkedin Scribe API gets null pointer exception
Question
I'm using Scribe API to integrate with LinkedIn encountered with problem which I get NPE, code:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.linkedin_list);
mContext = this;
mConnections = new ArrayList<String>();
// List and adapter
mLinkedInList = (ListView) findViewById(R.id.linkedInList);
mLinkedInListAdapter = new LinkedInAdapter(this, mContext, mConnections);
mLinkedInList.setAdapter(mLinkedInListAdapter);
// Start async task to get connections
LinkedInConnectionsTask task = new LinkedInConnectionsTask();
task.execute();
}
AsyncTask:
private class LinkedInConnectionsTask extends AsyncTask<Void, Void, String> {
private String LINKED_IN_CONNECTIONS_API = "http://api.linkedin.com/v1/people/~/connections";
@Override
protected String doInBackground(Void... arg) {
String urlStr = LINKED_IN_CONNECTIONS_API;
urlStr += "?format=json";
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext);
String access_token = prefs.getString("linkedin_access_token", null);
String access_secret = prefs.getString("linkedin_access_secret", null);
if ( access_token != null && access_secret != null ) {
OAuthService linkedInService = new ServiceBuilder()
.provider(LinkedInApi.class)
.apiKey( LinkedInOAuthActivity.APIKEY )
.apiSecret( LinkedInOAuthActivity.APISECRET )
.scope("r_basicprofile")
.scope("rw_nus")
.callback( LinkedInOAuthActivity.CALLBACK )
.build();
OAuthRequest request = new OAuthRequest(Verb.GET, urlStr);
Token t = new Token(access_token, access_secret);
linkedInService.signRequest(t, request);
Response response = null;
try {
response = request.send();
if ( response.isSuccessful() )
return response.getBody();
else
return null;
}
catch ( Exception e ) {
e.printStackTrace();
return null;
}
}
else {
return null;
}
}
@Override
protected void onPostExecute(String result) {
JSONArray arr = null;
JSONObject object = null;
try {
object = new JSONObject(result);
if ( object.has("values") ) {
arr = object.getJSONArray("values");
}
else {
return;
}
} catch (JSONException e1) {
e1.printStackTrace();
return;
}
JSONObject jsonObject = null;
for ( int i = 0; i < arr.length(); i++) {
try {
jsonObject = arr.getJSONObject(i);
} catch (JSONException e1) {
e1.printStackTrace();
}
try {
String fn = jsonObject.getString("firstName");
String ln = jsonObject.getString("lastName");
mLinkedInListAdapter.add(fn + " " + ln);
}
catch (JSONException e1) {
e1.printStackTrace();
}
}
mLinkedInListAdapter.notifyDataSetChanged();
}
}
getting NPE in:
response = request.send();
Error log:
05-22 13:18:33.559: E/AndroidRuntime(4979): FATAL EXCEPTION: main
05-22 13:18:33.559: E/AndroidRuntime(4979): java.lang.NullPointerException
05-22 13:18:33.559: E/AndroidRuntime(4979): at
org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
05-22 13:18:33.559: E/AndroidRuntime(4979): at org.json.JSONTokener.nextValue(JSONTokener.java:94)
05-22 13:18:33.559: E/AndroidRuntime(4979): at org.json.JSONObject.<init>(JSONObject.java:154)
05-22 13:18:33.559: E/AndroidRuntime(4979): at org.json.JSONObject.<init>(JSONObject.java:171)
05-22 13:18:33.559: E/AndroidRuntime(4979): at com.sourcetricks.myconnections.LinkedInListActivity$LinkedInConnectionsTask.onPostExecute(LinkedInListActivity.java:164)
05-22 13:18:33.559: E/AndroidRuntime(4979): at com.sourcetricks.myconnections.LinkedInListActivity$LinkedInConnectionsTask.onPostExecute(LinkedInListActivity.java:1)
05-22 13:18:33.559: E/AndroidRuntime(4979): at android.os.AsyncTask.finish(AsyncTask.java:631)
05-22 13:18:33.559: E/AndroidRuntime(4979): at android.os.AsyncTask.access$600(AsyncTask.java:177)
05-22 13:18:33.559: E/AndroidRuntime(4979): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
05-22 13:18:33.559: E/AndroidRuntime(4979): at android.os.Handler.dispatchMessage(Handler.java:99)
05-22 13:18:33.559: E/AndroidRuntime(4979): at android.os.Looper.loop(Looper.java:137)
05-22 13:18:33.559: E/AndroidRuntime(4979): at android.app.ActivityThread.main(ActivityThread.java:4898)
05-22 13:18:33.559: E/AndroidRuntime(4979): at java.lang.reflect.Method.invokeNative(Native Method)
05-22 13:18:33.559: E/AndroidRuntime(4979): at java.lang.reflect.Method.invoke(Method.java:511)
05-22 13:18:33.559: E/AndroidRuntime(4979): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
05-22 13:18:33.559: E/AndroidRuntime(4979): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
05-22 13:18:33.559: E/AndroidRuntime(4979): at dalvik.system.NativeStart.main(Native Method)
would appreciate if someone can help. I'm doing something wrong probably missing something. Thanks
Solution
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow