Can';我无法从twitter获得访问令牌来访问我在android中的帐户

Can';我无法从twitter获得访问令牌来访问我在android中的帐户,android,twitter,token,Android,Twitter,Token,我在android应用程序中使用twitter api在我的帐户上通过应用程序发布推文 但在从twitterb重定向后获取访问令牌时,有一些错误我无法识别 我希望你能帮助我 这是我的密码 if (!isTwitterLoggedInAlready()) { Toast.makeText(QuoteDialogActivity.this, "token get", Toast.LENGTH_SHORT).show();

我在android应用程序中使用twitter api在我的帐户上通过应用程序发布推文 但在从twitterb重定向后获取访问令牌时,有一些错误我无法识别

我希望你能帮助我

这是我的密码

if (!isTwitterLoggedInAlready()) {
                            Toast.makeText(QuoteDialogActivity.this, "token get", Toast.LENGTH_SHORT).show();
                            Uri uri = getIntent().getData();
                            if (uri != null && uri.toString().startsWith(TWITTER_CALLBACK_URL)) {
                                // oAuth verifier
                                final String verifier = uri
                                        .getQueryParameter(URL_TWITTER_OAUTH_VERIFIER);

                                try {

                                    Thread thread = new Thread(new Runnable(){
                                        @Override
                                        public void run() {
                                            try {

                                                // Get the access token
                                                QuoteDialogActivity.this.accessToken = twitter.getOAuthAccessToken(
                                                        requestToken,verifier);

                                            } catch (Exception e) {
                                                e.printStackTrace();
                                            }
                                        }
                                    });
                                    thread.start();

                                    // Shared Preferences
                                    Editor e = mPrefs.edit();

                                    // After getting access token, access token secret
                                    // store them in application preferences
                                    e.putString(PREF_KEY_OAUTH_TOKEN, accessToken.getToken());
                                    e.putString(PREF_KEY_OAUTH_SECRET,
                                            accessToken.getToken());
                                    // Store login status - true
                                    e.putBoolean(PREF_KEY_TWITTER_LOGIN, true);
                                    e.commit(); // save changes

                                    Log.e("Twitter OAuth Token", "> " + accessToken.getToken());


                                    // Getting user details from twitter
                                    // For now i am getting his name only
                                    long userID = accessToken.getUserId();
                                    User user = twitter.showUser(userID);
                                    String username = user.getName();

                                    // Displaying in xml ui
//                                  lblUserName.setText(Html.fromHtml("<b>Welcome " + username + "</b>"));
                                } catch (Exception e) {
                                    // Check log for login errors
                                    Log.e("Twitter Login Error", "> " + e.getMessage());
                                    e.printStackTrace();
                                }
                            }
                        }           
====================================================

private void loginToTwitter() {
           // Check if already logged in
           if (!isTwitterLoggedInAlready()) {
               ConfigurationBuilder builder = new ConfigurationBuilder();
               builder.setOAuthConsumerKey(TWITTER_CONSUMER_KEY);
               builder.setOAuthConsumerSecret(TWITTER_CONSUMER_SECRET);
               Configuration configuration = builder.build();

               TwitterFactory factory = new TwitterFactory(configuration);
               twitter = factory.getInstance();


                   Thread thread = new Thread(new Runnable(){
                       @Override
                       public void run() {
                           try {

                               requestToken = twitter
                                       .getOAuthRequestToken(TWITTER_CALLBACK_URL);
                               QuoteDialogActivity.this.startActivity(new Intent(Intent.ACTION_VIEW, Uri
                                       .parse(requestToken.getAuthenticationURL())));

                           } catch (Exception e) {
                               e.printStackTrace();
                           }
                       }
                   });
                   thread.start();         
           } else {
               // user already logged into twitter
               Toast.makeText(getApplicationContext(),
                       "Already Logged into twitter", Toast.LENGTH_LONG).show();
           }
       }


     private boolean isTwitterLoggedInAlready() {
           // return twitter login status from Shared Preferences
           return mPrefs.getBoolean(PREF_KEY_TWITTER_LOGIN, false);
       }
logcat

11-24 10:32:29.104: E/Twitter Login Error(3867): > null
11-24 10:32:29.104: W/System.err(3867): java.lang.NullPointerException
11-24 10:32:29.104: W/System.err(3867):     at com.engahmedphp.successquotes.MainActivity.onCreate(MainActivity.java:143)
11-24 10:32:29.104: W/System.err(3867):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-24 10:32:29.104: W/System.err(3867):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2633)
11-24 10:32:29.104: W/System.err(3867):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2685)
11-24 10:32:29.104: W/System.err(3867):     at android.app.ActivityThread.access$2300(ActivityThread.java:126)
11-24 10:32:29.104: W/System.err(3867):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2038)
11-24 10:32:29.104: W/System.err(3867):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-24 10:32:29.104: W/System.err(3867):     at android.os.Looper.loop(Looper.java:123)
11-24 10:32:29.114: W/System.err(3867):     at android.app.ActivityThread.main(ActivityThread.java:4633)
11-24 10:32:29.114: W/System.err(3867):     at java.lang.reflect.Method.invokeNative(Native Method)
11-24 10:32:29.114: W/System.err(3867):     at java.lang.reflect.Method.invoke(Method.java:521)
11-24 10:32:29.114: W/System.err(3867):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
11-24 10:32:29.114: W/System.err(3867):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
11-24 10:32:29.114: W/System.err(3867):     at dalvik.system.NativeStart.main(Native Method)
11-24 10:32:29.114: W/System.err(3867): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
11-24 10:32:29.114: W/System.err(3867):     at android.os.Handler.<init>(Handler.java:121)
11-24 10:32:29.114: W/System.err(3867):     at android.widget.Toast.<init>(Toast.java:68)
11-24 10:32:29.114: W/System.err(3867):     at android.widget.Toast.makeText(Toast.java:231)
11-24 10:32:29.114: W/System.err(3867):     at com.engahmedphp.successquotes.MainActivity$5.run(MainActivity.java:126)
11-24 10:32:29.114: W/System.err(3867):     at java.lang.Thread.run(Thread.java:1096)
11-2410:32:29.104:E/Twitter登录错误(3867):>null
11-24 10:32:29.104:W/System.err(3867):java.lang.NullPointerException
11-24 10:32:29.104:W/System.err(3867):位于com.engahmedphp.successquotes.MainActivity.onCreate(MainActivity.java:143)
11-24 10:32:29.104:W/System.err(3867):位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-24 10:32:29.104:W/System.err(3867):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2633)
11-24 10:32:29.104:W/System.err(3867):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2685)
11-24 10:32:29.104:W/System.err(3867):在android.app.ActivityThread.access$2300(ActivityThread.java:126)
11-24 10:32:29.104:W/System.err(3867):位于android.app.ActivityThread$H.handleMessage(ActivityThread.java:2038)
11-24 10:32:29.104:W/System.err(3867):在android.os.Handler.dispatchMessage(Handler.java:99)上
11-24 10:32:29.104:W/System.err(3867):在android.os.Looper.loop(Looper.java:123)上
11-24 10:32:29.114:W/System.err(3867):位于android.app.ActivityThread.main(ActivityThread.java:4633)
11-24 10:32:29.114:W/System.err(3867):位于java.lang.reflect.Method.invokenactive(本机方法)
11-24 10:32:29.114:W/System.err(3867):位于java.lang.reflect.Method.invoke(Method.java:521)
11-24 10:32:29.114:W/System.err(3867):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
11-24 10:32:29.114:W/System.err(3867):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
11-24 10:32:29.114:W/System.err(3867):在dalvik.System.NativeStart.main(本机方法)
11-24 10:32:29.114:W/System.err(3867):java.lang.RuntimeException:无法在未调用Looper.prepare()的线程内创建处理程序
11-24 10:32:29.114:W/System.err(3867):位于android.os.Handler.(Handler.java:121)
11-24 10:32:29.114:W/System.err(3867):在android.widget.Toast(Toast.java:68)
11-24 10:32:29.114:W/System.err(3867):在android.widget.Toast.makeText(Toast.java:231)上
11-24 10:32:29.114:W/System.err(3867):位于com.engahmedphp.successquotes.MainActivity$5.run(MainActivity.java:126)
11-24 10:32:29.114:W/System.err(3867):at java.lang.Thread.run(Thread.java:1096)

在MainActivity的第143行,您想做什么?在onCreate方法中?这一行是e.putString(PREF_KEY_OAUTH_TOKEN,accessToken.getToken());e可能为null或访问令牌可能为null。您应该显示该代码,并明确指出堆栈跟踪中出现的行。是的,它返回null,但为什么?调试应用程序,跟踪所有内容,找出该值为null的原因。它应该在哪里初始化为不同的东西,会发生什么。所有这些都是你应该问自己的问题。检验、探测、发出假设。你可以理解哪里出了问题,计算机只有在这种情况下才会出问题,人类比机器优越得多:)