Twitter没有提供访问权限,试图在没有退出片段的情况下第二次发布推文,但在第一次发布推文时工作正常

时间:2014-09-12 05:46:44

标签: android twitter oauth twitter4j

我正在尝试使用twitter集成在Twitter上发布推文。我的项目第一次工作正常,同时发布推文和推文成功发布但在第二次弹出时显示如下。如果我关闭片段然后重新开始然后它工作正常,但如果我试图第二次发布推文它没有关闭它显示弹出窗口。 Logcat显示 -

https://api.twitter.com/oauth/authorize?oauth_token=xyz

弹出式节目 -

![在此处输入图片说明] [1]

问题可能是因为第二次请求令牌无法访问..我使用以下代码访问请求令牌..

 protected String doInBackground(String... args) {
        try {
          if(requestTokenFirstTime) {
                requestToken = twitter.getOAuthRequestToken();

                        requestTokenFirstTime = false;



                SharedPreferences.Editor edit = pref.edit();

                edit.putString("Request_TOKEN", requestToken.getToken());
                edit.putString("Request_TOKEN_SECRET", requestToken.getTokenSecret());

                edit.commit();
               requestTokenFirstTime = false;
          }
          else {

              requestToken = new RequestToken(pref.getString("Request_TOKEN", ""), pref.getString("Request_TOKEN_SECRET", ""));



            }
            oauth_url = requestToken.getAuthorizationURL();
        } catch (TwitterException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return oauth_url;
    }

如果我删除其他部分并尝试每次请求令牌,那么应用程序崩溃显示以下错误说"访问令牌已经可用..

我尝试通过添加

来使accessToken无效
 twitter.setOAuthAccessToken(null);
                    twitter.setOAuth2Token(null);

在onPostExecute()内部,但也没有工作..

1 个答案:

答案 0 :(得分:0)

这解决了我的问题..

 private class LoginProcess implements OnClickListener {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            if (requestTokenFirstTime)
            {
                new TokenGet().execute();
            }
            else
            {
                Fragment profile = new ProfileFragment();
                FragmentTransaction ft = getActivity().getFragmentManager().beginTransaction();
                ft.replace(R.id.frame_container, profile);
                ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
                ft.addToBackStack(null);
                ft.commit();
            }
        }
    }

   private class TokenGet extends AsyncTask<String, String, String> {
        @Override
        protected String doInBackground(String... args) {
            try {

                    requestToken = twitter.getOAuthRequestToken();

                            requestTokenFirstTime = false;



                    SharedPreferences.Editor edit = pref.edit();

                    edit.putString("Request_TOKEN", requestToken.getToken());
                    edit.putString("Request_TOKEN_SECRET", requestToken.getTokenSecret());

                    edit.commit();
                   requestTokenFirstTime = false;

                oauth_url = requestToken.getAuthorizationURL();
            } catch (TwitterException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return oauth_url;
        }