質問

In my simple tumblr client trying to fetch user info. Retrieving access and request tokens are ok.

Some code snippets:

CommonsHttpOAuthProvider provider = new CommonsHttpOAuthProvider(
            "http://www.tumblr.com/oauth/request_token", 
            "http://www.tumblr.com/oauth/access_token", 
            "http://www.tumblr.com/oauth/authorize");
    provider.setOAuth10a(true);

OAuthConsumer consumer = new CommonsHttpOAuthConsumer(
            app.TUMBLR_OAUTH_CONSUMER_KEY,
            app.TUMBLER_CONSUMER_SECRET_KEY);

Making user authentication thru browser:

String authUrl = provider.retrieveRequestToken(consumer,
                    "everyshare://everyshare.com/ok");
            // savint token and token secret...
            Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri
                    .parse(authUrl));
            startActivity(browserIntent);

After authenticate:

public void onResume() {
    super.onResume();

    Uri uri = this.getIntent().getData();
    if (uri != null) {
        oauth_verifier = uri.getQueryParameter("oauth_verifier");

        try {
                            // consumer with the request token and secret
            provider.retrieveAccessToken(consumer, oauth_verifier);

            String url = "api.tumblr.com/v2/user/info";

            DefaultHttpClient httpclient = new DefaultHttpClient();
            HttpGet request = new HttpGet(url);
            consumer.sign(request); // here's throws exception

...

error log

  oauth.signpost.exception.OAuthMessageSignerException: java.lang.NullPointerException  at 
  oauth.signpost.signature.SignatureBaseString.generate(SignatureBaseString.java:60) at 
  oauth.signpost.signature.HmacSha1MessageSigner.sign(HmacSha1MessageSigner.java:51) at
  oauth.signpost.AbstractOAuthConsumer.sign(AbstractOAuthConsumer.java:97) at 
  oauth.signpost.AbstractOAuthConsumer.sign(AbstractOAuthConsumer.java:107) at 
  com.skelpo.everyshare.activitys.TumblrSettingsAct.onResume(TumblrSettingsAct.java:154) at 
  android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1150) at 
  android.app.Activity.performResume(Activity.java:3882) at 
  android.app.ActivityThread.performResumeActivity(ActivityThread.java:2191) at
  android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2228) at
  android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1721) at 
  android.app.ActivityThread.access$1500(ActivityThread.java:124) at 
  android.app.ActivityThread$H.handleMessage(ActivityThread.java:968) at
  android.os.Handler.dispatchMessage(Handler.java:99) at 
  android.os.Looper.loop(Looper.java:130) at 
  android.app.ActivityThread.main(ActivityThread.java:3806) at 
  java.lang.reflect.Method.invokeNative(Native Method) at 
  java.lang.reflect.Method.invoke(Method.java:507) at 
  com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) at 
  com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) at 
  dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException at 
  oauth.signpost.signature.SignatureBaseString.normalizeRequestUrl(SignatureBaseString.java:66) at 
  oauth.signpost.signature.SignatureBaseString.generate(SignatureBaseString.java:54)

This is my first experience with OAuth and signpost lib. So will be grateful for any help.

役に立ちましたか?

解決

It's so dummy mistake! And made me waste few days... After adding http:// prefix to "api.tumblr.com/v2/user/info" URL all works fine!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top