Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从Tumblr获取用户信息_Android_Networking_Oauth_Tumblr - Fatal编程技术网

Android 从Tumblr获取用户信息

Android 从Tumblr获取用户信息,android,networking,oauth,tumblr,Android,Networking,Oauth,Tumblr,我首先从浏览器中获取令牌和验证器,如下所示: CommonsHttpOAuthConsumer consumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); CommonsHttpOAuthProvider provider = new CommonsHttpOAuthProvider(REQUEST_TOKEN_URL, ACCESS_TOKEN_URL, AUTH_URL);

我首先从浏览器中获取令牌和验证器,如下所示:

CommonsHttpOAuthConsumer consumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
                CommonsHttpOAuthProvider provider = new CommonsHttpOAuthProvider(REQUEST_TOKEN_URL, ACCESS_TOKEN_URL, AUTH_URL);
                String authUrl;
                try {
                    authUrl = provider.retrieveRequestToken(consumer, CALLBACK_URL);
                    LogService.log(TAG, "Auth url:" + authUrl);

                    context.startActivity(new Intent("android.intent.action.VIEW", Uri.parse(authUrl)));

                } catch (OAuthMessageSignerException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (OAuthNotAuthorizedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (OAuthExpectationFailedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (OAuthCommunicationException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
Uri uri = getIntent().getData();
    if (uri != null) {

        Constants.TumblrToken = uri.getQueryParameter("oauth_token");
        Constants.TumblrVerifier = uri.getQueryParameter("oauth_verifier");
        String user = uri.getQueryParameter("username");

        LogService.log("", "Token:" + Constants.TumblrToken);
        LogService.log("", "Verifier:" + Constants.TumblrVerifier);
        Thread th = new Thread(new Runnable() {

            @Override
            public void run() {
                JumblrClient client = new JumblrClient(Util.CONSUMER_KEY, Util.CONSUMER_SECRET);
                client.setToken(Constants.TumblrToken, Constants.TumblrVerifier);

                User user = client.user();
                LogService.log("", "user.getName(): " + user.getName());

            }
        });
        th.start();
    }
在此之后,回调会将我带到另一个类,在该类中,我尝试获取如下用户信息:

CommonsHttpOAuthConsumer consumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
                CommonsHttpOAuthProvider provider = new CommonsHttpOAuthProvider(REQUEST_TOKEN_URL, ACCESS_TOKEN_URL, AUTH_URL);
                String authUrl;
                try {
                    authUrl = provider.retrieveRequestToken(consumer, CALLBACK_URL);
                    LogService.log(TAG, "Auth url:" + authUrl);

                    context.startActivity(new Intent("android.intent.action.VIEW", Uri.parse(authUrl)));

                } catch (OAuthMessageSignerException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (OAuthNotAuthorizedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (OAuthExpectationFailedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (OAuthCommunicationException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
Uri uri = getIntent().getData();
    if (uri != null) {

        Constants.TumblrToken = uri.getQueryParameter("oauth_token");
        Constants.TumblrVerifier = uri.getQueryParameter("oauth_verifier");
        String user = uri.getQueryParameter("username");

        LogService.log("", "Token:" + Constants.TumblrToken);
        LogService.log("", "Verifier:" + Constants.TumblrVerifier);
        Thread th = new Thread(new Runnable() {

            @Override
            public void run() {
                JumblrClient client = new JumblrClient(Util.CONSUMER_KEY, Util.CONSUMER_SECRET);
                client.setToken(Constants.TumblrToken, Constants.TumblrVerifier);

                User user = client.user();
                LogService.log("", "user.getName(): " + user.getName());

            }
        });
        th.start();
    }
这就是我得到的错误:

11-28 14:19:49.925: E/AndroidRuntime(30600): FATAL EXCEPTION: Thread-1474
11-28 14:19:49.925: E/AndroidRuntime(30600): org.scribe.exceptions.OAuthConnectionException: There was a problem while creating a connection to the remote service.
11-28 14:19:49.925: E/AndroidRuntime(30600):    at org.scribe.model.Request.send(Request.java:66)
11-28 14:19:49.925: E/AndroidRuntime(30600):    at org.scribe.model.OAuthRequest.send(OAuthRequest.java:12)
11-28 14:19:49.925: E/AndroidRuntime(30600):    at com.tumblr.jumblr.request.RequestBuilder.get(RequestBuilder.java:69)
11-28 14:19:49.925: E/AndroidRuntime(30600):    at com.tumblr.jumblr.JumblrClient.user(JumblrClient.java:64)
11-28 14:19:49.925: E/AndroidRuntime(30600):    at com.imagechef.activities.BackFromTumblr$1.run(BackFromTumblr.java:34)
11-28 14:19:49.925: E/AndroidRuntime(30600):    at java.lang.Thread.run(Thread.java:856)
11-28 14:19:49.925: E/AndroidRuntime(30600): Caused by: java.io.IOException: Received authentication challenge is null
11-28 14:19:49.925: E/AndroidRuntime(30600):    at libcore.net.http.HttpURLConnectionImpl.processAuthHeader(HttpURLConnectionImpl.java:397)
11-28 14:19:49.925: E/AndroidRuntime(30600):    at libcore.net.http.HttpURLConnectionImpl.processResponseHeaders(HttpURLConnectionImpl.java:345)
11-28 14:19:49.925: E/AndroidRuntime(30600):    at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:276)
11-28 14:19:49.925: E/AndroidRuntime(30600):    at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:479)
11-28 14:19:49.925: E/AndroidRuntime(30600):    at org.scribe.model.Response.<init>(Response.java:29)
11-28 14:19:49.925: E/AndroidRuntime(30600):    at org.scribe.model.Request.doSend(Request.java:106)
11-28 14:19:49.925: E/AndroidRuntime(30600):    at org.scribe.model.Request.send(Request.java:62)
11-28 14:19:49.925: E/AndroidRuntime(30600):    ... 5 more

您需要在异步任务中运行网络操作

为什么?我的意思是我使用另一个线程,用于网络,因此它不在UIThread上