MrYanDao
MrYanDao

Reputation: 1263

Tumblr API - Jumblr for Android [OAuthConnectionException]

I realized that Jumblr, a Tumblr APi for Android isn't well documented on how do we actually go about implementing one. I've successfully authorize my account on my app. That's all. According to Jumblr's README, all you have to do is to

JumblrClient client = new JumblrClient("consumer_key", "consumer_secret");
client.setToken("oauth_token", "oauth_token_secret");

where consumer key and secret is already set in my app and oauth_token and token_secret is got by the app when user logs in. However, I'm getting errors like

org.scribe.exceptions.OAuthConnectionException: There was a problem while creating a connection to the remote service.

Full logcat:

08-12 19:55:03.212: E/AndroidRuntime(27896): FATAL EXCEPTION: main
08-12 19:55:03.212: E/AndroidRuntime(27896): java.lang.RuntimeException: Unable to start activity ComponentInfo{dev.example.tumblr/dev.example.tumblr.MainActivity}: org.scribe.exceptions.OAuthConnectionException: There was a problem while creating a connection to the remote service.
08-12 19:55:03.212: E/AndroidRuntime(27896):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2308)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2358)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at android.app.ActivityThread.access$600(ActivityThread.java:153)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at android.os.Handler.dispatchMessage(Handler.java:99)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at android.os.Looper.loop(Looper.java:137)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at android.app.ActivityThread.main(ActivityThread.java:5227)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at java.lang.reflect.Method.invokeNative(Native Method)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at java.lang.reflect.Method.invoke(Method.java:511)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at dalvik.system.NativeStart.main(Native Method)
08-12 19:55:03.212: E/AndroidRuntime(27896): Caused by: org.scribe.exceptions.OAuthConnectionException: There was a problem while creating a connection to the remote service.
08-12 19:55:03.212: E/AndroidRuntime(27896):    at org.scribe.model.Request.send(Request.java:70)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at org.scribe.model.Request.send(Request.java:76)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at dev.example.tumblr.library.request.RequestBuilder.get(RequestBuilder.java:71)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at dev.example.tumblr.library.JumblrClient.user(JumblrClient.java:65)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at dev.example.tumblr.MainActivity.onCreate(MainActivity.java:59)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at android.app.Activity.performCreate(Activity.java:5104)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2262)
08-12 19:55:03.212: E/AndroidRuntime(27896):    ... 11 more
08-12 19:55:03.212: E/AndroidRuntime(27896): Caused by: android.os.NetworkOnMainThreadException
08-12 19:55:03.212: E/AndroidRuntime(27896):    at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at java.net.InetAddress.getAllByName(InetAddress.java:214)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at libcore.net.http.HttpEngine.connect(HttpEngine.java:311)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:81)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at org.scribe.model.Response.<init>(Response.java:29)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at org.scribe.model.Request.doSend(Request.java:117)
08-12 19:55:03.212: E/AndroidRuntime(27896):    at org.scribe.model.Request.send(Request.java:66)

I know I have to do something with Oauth. But what is it? I have little experience in previous Oauth for Twitter.

Thanks in advance.

Upvotes: 1

Views: 1467

Answers (2)

DcodeChef
DcodeChef

Reputation: 1550

Unable to get user info

Using: consumer = new CommonsHttpOAuthConsumer(APP_CONSUMER_KEY, APP_CONSUMER_SECRET); provider = new CommonsHttpOAuthProvider("request token url", "acess token url", "authorize url"); provider.setOAuth10a(true); try { authUrl = provider.retrieveRequestToken(consumer, CALLBACK_URL); }

After getting token and secret, I am calling

api = new JumblrClient(TumblrLoginActivity.APP_CONSUMER_KEY,TumblrLoginActivity.APP_CONSUMER_SECRET); api.setToken(consumer.getToken(), consumer.getTokenSecret());

LOG error:

org.scribe.exceptions.OAuthConnectionException: There was a problem while creating a connection to the remote service.

Upvotes: 0

jathak
jathak

Reputation: 93

The issue is with the NetworkOnMainThreadException and not OAuth. Starting with Android 3.0, all network operations must be run on background threads. Put your calls to Jumblr in an AsyncTask or something similar.

Upvotes: 4

Related Questions