【问题标题】:Twitter doesn't give access on trying to post tweet for second time without exiting fragment but works fine on posting tweet for first timeTwitter 不允许在不退出片段的情况下第二次尝试发布推文,但在第一次发布推文时工作正常
【发布时间】:2014-11-06 05:39:03
【问题描述】:

我正在尝试使用 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;
    }

如果我删除 else 部分并尝试每次请求请求令牌,则应用程序崩溃并显示以下错误消息“访问令牌已可用..

我尝试通过放置使 accessToken 无效

 twitter.setOAuthAccessToken(null);
                    twitter.setOAuth2Token(null);

在 onPostExecute() 内部,但这也没有用..

【问题讨论】:

    标签: android twitter oauth twitter4j


    【解决方案1】:

    这解决了我的问题..

     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;
            }
    

    【讨论】:

      猜你喜欢
      • 2012-07-19
      • 2021-02-28
      • 2012-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-17
      • 2011-08-29
      • 1970-01-01
      相关资源
      最近更新 更多