Question

First, my problem is that I can't post any Network Updates, post Shares or Invite by ID. I always get the following exception :

08-29 17:18:04.000: E/AndroidRuntime(4316): FATAL EXCEPTION: main
08-29 17:18:04.000: E/AndroidRuntime(4316): com.google.code.linkedinapi.client.LinkedInApiClientException: Access to posting network updates denied.
08-29 17:18:04.000: E/AndroidRuntime(4316):     at com.google.code.linkedinapi.client.impl.BaseLinkedInApiClient.createLinkedInApiClientException(BaseLinkedInApiClient.java:3906)
08-29 17:18:04.000: E/AndroidRuntime(4316):     at com.google.code.linkedinapi.client.impl.BaseLinkedInApiClient.callApiMethod(BaseLinkedInApiClient.java:3846)
08-29 17:18:04.000: E/AndroidRuntime(4316):     at com.google.code.linkedinapi.client.impl.BaseLinkedInApiClient.postNetworkUpdate(BaseLinkedInApiClient.java:1172)
08-29 17:18:04.000: E/AndroidRuntime(4316):     at pl.osadkowski.LITest.LITestActivity.onNewIntent(LITestActivity.java:61)
08-29 17:18:04.000: E/AndroidRuntime(4316):     at android.app.Instrumentation.callActivityOnNewIntent(Instrumentation.java:1123)
08-29 17:18:04.000: E/AndroidRuntime(4316):     at android.app.ActivityThread.deliverNewIntents(ActivityThread.java:2042)
08-29 17:18:04.000: E/AndroidRuntime(4316):     at android.app.ActivityThread.performNewIntents(ActivityThread.java:2055)
08-29 17:18:04.000: E/AndroidRuntime(4316):     at android.app.ActivityThread.handleNewIntent(ActivityThread.java:2064)
08-29 17:18:04.000: E/AndroidRuntime(4316):     at android.app.ActivityThread.access$1400(ActivityThread.java:123)
08-29 17:18:04.000: E/AndroidRuntime(4316):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1194)
08-29 17:18:04.000: E/AndroidRuntime(4316):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-29 17:18:04.000: E/AndroidRuntime(4316):     at android.os.Looper.loop(Looper.java:137)
08-29 17:18:04.000: E/AndroidRuntime(4316):     at android.app.ActivityThread.main(ActivityThread.java:4424)
08-29 17:18:04.000: E/AndroidRuntime(4316):     at java.lang.reflect.Method.invokeNative(Native Method)
08-29 17:18:04.000: E/AndroidRuntime(4316):     at java.lang.reflect.Method.invoke(Method.java:511)
08-29 17:18:04.000: E/AndroidRuntime(4316):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
08-29 17:18:04.000: E/AndroidRuntime(4316):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
08-29 17:18:04.000: E/AndroidRuntime(4316):     at dalvik.system.NativeStart.main(Native Method)

Secondly, What have I tried? Well, I'm sure I haven't tried EVERYTHING or else it would be working but I feel like I exhausted all possibilities. SOME of the things I have tried to no avail :

https://developer.linkedin.com/documents/authentication#granting

https://stackoverflow.com/a/10872824/1436210

http://code.google.com/p/linkedin-j/source/browse/trunk/linkedin-j/core/src/examples/java/com/google/code/linkedinapi/client/examples/PostNetworkUpdateExample.java?r=197

http://code.google.com/p/linkedin-j/wiki/GettingStarted

http://code.google.com/p/linkedin-j/wiki/AndroidConfiguration

I really hope someone can help!! I'll try anything!! Thanks a million!

Était-ce utile?

La solution

I made a fix for scope parameter to linkedin-j-android.jar of version 1.0.429

here is the link for downloading patched linkedin-j-android.jar with scope fix

http://db.tt/yQjhqeq3

and Usage is like this it is additional parameter

private String CONSUMER_KEY="XX"; // your consumer key here
private String CONSUMER_SECRET="YY"; // your consumer secret here
private String scopeParams="rw_nus+r_basicprofile";

LinkedInOAuthService oAuthService=LinkedInOAuthServiceFactory
            .getInstance().createLinkedInOAuthService(
                    CONSUMER_KEY,CONSUMER_SECRET, scopeParams);

Hope this helps..

Autres conseils

You don't have to change the source code. you can change the URL via reflection:

java.lang.reflect.Field field = LinkedInApiUrls.class.getField("LINKED_IN_OAUTH_REQUEST_TOKEN_URL");
field.setAccessible(true);
java.lang.reflect.Field modifiersField = java.lang.reflect.Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
field.set(null, LinkedInApiUrls.LINKED_IN_OAUTH_REQUEST_TOKEN_URL + "?scope=r_basicprofile+r_emailaddress");

Anyhow, LinkedIn oAuth1 API doesn't support getting the email, you must use the oAuth2 API (http://developer.linkedin.com/documents/authentication)

I'm getting same problem too. I see that my requestToken doesn't ask permission for network updates to user. So I'm not able to get the Network Updates.

But where is that assigning scope part in api of linkedin-j? I looked over the linkedin api and got that we must use scope=rw_nus+r_basicprofile param in requestToken.

I fixed the issue by using scribe.jar instead of linkedin-j.jar. You have to extract the classes in the jar and edit org.scribe.builder.api.LinkedInApi.class to change the url "https://api.linkedin.com/uas/oauth/requestToken" to "https://api.linkedin.com/uas/oauth/requestToken?scope=rw_nus".

You can achieve this by deleting the class LinkedInApi from the package and then repackage the scribe.jar file. And, create a file with the same name in the same package in your project by changing the url. You can get the .java version of the file in the location "https://github.com/fernandezpablo85/scribe-java/blob/master/src/main/java/org/scribe/builder/api/LinkedInApi.java".

This is to add the permission for making network updates when requesting permission from the user. The xml for sending the input for the network update is given in the link "https://developer.linkedin.com/documents/share-api"

@eddy, Simple workaround is download the src jar of the linked-j and then find LinkedInApiUrls.properties and finally edit the property : "com.google.code.linkedinapi.client.oauth.requestToken" with https://api.linkedin.com/uas/oauth/requestToken?scope=rw_nus+r_basicprofile

then add that edited src code to your project as library.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top